使用minOccurs标签将XSD转换为另一个XSD的XSLT

我有一个现有的XSD,其中定义了一系列复杂类型。 我需要建立一个correlary XSD为每个这些类型的,但在每个复杂类型的每一个元素的需要是任选的(的minOccurs =“0”)。

我发现这篇文章是从...开始的例子,但我无法添加可选标签。 使用xsl将XML模式模板转换为其他xml模式模板

任何对XSLT比我更精通的人的帮助?


由于您没有提供样本,所以我没有进行过非常多的测试,但以下基于Identity变换的样式表可以成为一项工作。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- Identity transform - copy everything into output -->
    <xsl:template match="node() | @*">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*" />
        </xsl:copy>
    </xsl:template>

    <!-- for not-root xs:element ... -->
    <xsl:template match="xs:element[ancestor::xs:complexType]">
        <xsl:copy>
            <!-- ... add minOccurs element ...-->
            <xsl:attribute name="minOccurs">0</xsl:attribute>
            <!-- ... and copy everything but not minOccurs attribute if any -->
            <xsl:apply-templates select="node() | @*[not(name() = 'minOccurs')]" />     
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>
链接地址: http://www.djcxy.com/p/34335.html

上一篇: XSLT to transform XSD to another XSD with minOccurs tags

下一篇: Transforming a XML according to a XSD using XSLT