Create well-formed XML and schema efficiently
Most companies, both large and small still use XML, even if JSON has overtaken it in popularity. However, many are using it, for example to exchange data, or have configuration files that can contain comments (unlike JSON). Whatever your reason for using XML, Rider contains many great XML features that enable you to work with it more efficiently. In this blog post, we’ll look at using Rider to create and maintain perfectly well-formed XML, schemas, and more. Fortunately for us, Rider contains many great XML features that enable you to work with it more efficiently. In this blog post, we’ll look at using Rider to create and maintain perfectly well-formed XML, schemas, and more.
XML is a markup language that describes data, and is meant to be both human and machine readable. It allows developers to structure text-based schema, usually to share with a vendor, partner, other system, etc… XML has enjoyed longevity as a markup language for many years now, and although JSON has overtaken it in popularity, XML is still used every day.
Work with XML elements and data
You might be crafting XML to match an existing database schema, or the schematic requirements of a customer, vendor, or partner. Alternatively, you might be creating XML from scratch. Either way, Rider has you covered, with dozens of intentions, autocompletions, and other features to make XML element creation go smoothly. A bonus for web developers: Because HTML has a tag-based syntax, many of the intention actions and refactorings in this blog post work for HTML too!
Renaming code, XML, or other objects is a daily task of any programmer, regardless of language or technology. Rider contains rename refactorings for just about everything, including XML elements and attributes. For example, if you’re working on a restaurant’s online menu, you might have some renaming to do as the menu evolves. Rider enables you to rename a single element or attribute, or each instance of an element or attribute. To rename each instance of an attribute, for example, use Rename Element. If you choose only the Rename option, it will only rename the individual attribute at the cursor position.
Often, creating XML elements means moving tags and attributes around, so they make better sense. Converting tags to attributes or attributes to tags is often necessary. Using our menu as an example, it seems better to convert the
name element to an attribute of a menu item. To convert a tag to an attribute, or vice versa, use Alt+Enter.
Conversely, converting attributes to tags and making them a child element is also a frequent but necessary activity when structuring XML.
It’s easy to miss something while combing through miles of XML! When you need to insert a tag around all instances of another tag, use Ctrl+Shift+R and choose the Wrap Tag refactoring. The example menu is missing some nutrition information, so wrap the
calories tag with it.
Continuing with the example, allergy information should be added inside all nutrition-information elements. Use Ctrl+Shift+R again, but this time, to invoke the Add Subtag refactoring.
Rider has so many more ways to work with XML data. Open any XML document and use Ctrl+Shift+R (or Refactor | Refactor This) to see a list of all the helpful XML refactoring features available. If you don’t see a refactoring, place your cursor on an element and use Alt+Enter for contextual suggestions.
Validate XML Documents
Rider performs automatic validation for well-formedness of XML while you type XML entries. However, you may want to do your own manual validation to double check things, since Rider doesn’t validate every detail such as structure, until the XML file is linked to an XSD or DTD. Therefore, Rider presents several options for validating XML and creating DTD (Document Type Definitions) and schema files, located in the Tools | XML Actions menu, or by right clicking in any editor window containing an open .xml file. Being able to generate schema means you can form and use your XML to dictate how the structure looks.
Alternatively, you may want to start by creating a schema file then generating template XML from it.
Creating valid XML means that you may have to create portions of the file that are designated as simple character data, rather than a defined type of data. That’s where
CDATA comes into play.
CDATA is defined as blocks of text that are not parsed by the parser, but are otherwise recognized as markup. Some examples for using
CDATA are when XML documents have text that contain characters such as
&. Use Alt+Enter to switch between
CDATA and text.
As an alternative to
CDATA, Rider can convert special characters into their HTML character reference codes
> Using Alt+Enter, you can switch between character codes and the characters.
To properly validate documents, you must work with namespaces in XML. There are many public namespaces that define generic schema. For example, http://www.w3.org/2001/XMLSchema is the namespace that defines basic types. You’ll also use your own namespaces, whether publicly or privately hosted. Your namespaces map to one of your schema or DTD files, and you must link your XML documents to those namespaces for proper validation.
Namespaces are important concepts in XML, as they denote virtual locations that often map to physical locations that contain definitions of data types for XML documents. If you use a namespace identifier in elements without a namespace declaration, Rider recognizes that and marks the namespace as unidentified. Use Alt+Enter to add the namespace.
XPath and XSLT
XPath (XML Path Language) and XSLT (Extensible Stylesheet Language Transformations) are two complimentary languages that work with XML. XPath is a query language used to select nodes in an XML document. XSLT is a way to format XML for presentation. These are often used together along with XML and its schema. Rider contains features to help you make the most of XPath and XSLT as well as all the great features for XML.
XPath uses a pattern matching syntax, to match nodes or node values in an XML or XSLT document. To easily find a path that might be queried often, Rider has a View Unique XPath option. Use View | Unique XPath from the menu or Ctrl+Alt+X,P.
Similarly, you can easily search through mountains of XML by using an XPath expression. Go with Ctrl+Alt+X,E or use the Edit menu, then Find | Find by XPath.
Rider contains everything you need to craft high quality, well formed, XML documents, schemas, and DTDs. Even working with XPath and XSLT is more simple with Rider. So download Rider and let us know how you use it to manage all things XML.
Subscribe to Blog updates
Thanks, we've got you!
A Second Set of Bug Fixes: ReSharper 2023.2.2 and Rider 2023.2.2 Are Here!
ReSharper and Rider have just received their second set of bug-fix updates for the 2023.2 release! Let’s take a look at the most important issues that have been resolved in this update. ReSharper For the full list of resolved issues, please refer to our issue tracker. …
ReSharper 2023.3 Early Access Program Begins!
Hello everyone, The Early Access Program for ReSharper 2023.3 has started! Before you download the first EAP build, let’s take a look at what is in store for you. Working with aliases With this first EAP build, we are introducing support for C# 12’s ability for alias directives to refer…
Rider Kicks Off the Early Access Program for the 2023.3 Release!
The Early Access Program for Rider 2023.3 has just begun with the release of the Rider 2023.3 EAP 1 build. There are several ways to get your hands on it: Download and install them from our website. Use the Toolbox App. Install this snap package from the SnapCraft store if you’re using a c…
Eager, Lazy and Explicit Loading with Entity Framework Core
Entity Framework Core (EF Core) supports a number of ways to load related data. There’s eager loading, lazy loading, and explicit loading. Each of these approaches have their own advantages and drawbacks. In this post, let’s have a quick look at each of these ways to load data for navigational prope…