У меня есть ситуация, когда определенные элементы (xs: simpleType, xs: complexType) помещаются в вывод при их обнаружении:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="HighSchoolType">
<xs:sequence>
<xs:element name="OrganizationName" type="core:OrganizationNameType"/>
<xs:element name="OPEID" type="core:OPEIDType"/>
<xs:simpleType name="OPEIDType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OrganizationNameType"/>
</xs:schema>
Я бы предпочел, чтобы xs: simpleType всегда был присоединен к корню, независимо от того, где шаблон встречается в источнике. IE:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="HighSchoolType">
<xs:sequence>
<xs:element name="OrganizationName" type="core:OrganizationNameType"/>
<xs:element name="OPEID" type="core:OPEIDType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OrganizationNameType"/>
<xs:simpleType name="OPEIDType"/>
</xs:schema>
Можно ли также останавливать дубликаты на этом этапе?
Вот шаблон, который я сейчас использую:
<xsl:template match="xs:simpleType">
<xsl:copy>
<xsl:copy-of select="*[not(self::xs:annotation or self::xs:restriction)]|@*"/>
</xsl:copy>
</xsl:template>