Вы можете извлечь часть XSD из вашей следующей таблицы стилей XSLT-1.0. Сначала он соответствует элементу /root
, а затем копирует все дочерние элементы xsd:...
с пользовательским шаблоном идентификации :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<!-- Identity template for 'xsd' -->
<xsl:template match="@*|node()" mode="xsd">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="xsd" />
</xsl:copy>
</xsl:template>
<xsl:template match="/root/xsd:schema">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="xsd" />
</xsl:copy>
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
Результат:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="dataroot">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded"><xsd:element ref="AE"/>
...
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Я проигнорировал ...
, потому что они, вероятно, не являются частью XML.