XML path semantics
On the XML path string, you can state at a particular path component that
subsequent components in the path are parsed/validated. This assumes the modified
element type has been substituted by another type using an xsi:type
attribute at runtime.
To indicate a type modifier on an XML path component, the XML path uses an illegal character in XML element names to prevent character collision.
The "{" character indicates the text is the name of the substituted type, ending at the "}" character. XML path components that are specified after the re-declared component walks the hierarchy based on the substituted type.
These path examples use this schema for validation:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root">
<xsd:element ref="child" maxOccurs="unbounded"/>
</xsd:element>
<xsd:element name="child" type="abstracttype"/>
<xsd:complexType name="abstracttype" abstract="true">
<xsd:attribute name="abstractattr"/>
</xsd:complexType>
<xsd:complexType name="realtype">
<xsd:simpleContent>
<xsd:extension base="abstracttype">
<xsd:attribute name="realattr"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="otherrealtype">
<xsd:complexContent>
<xsd:extension base="abstracttype">
<xsd:sequence>
<xsd:element name="othergrandchild" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>