使用 XSLT 在 XSD 中查找递归



我正在尝试使用 XSLT 在 XSD 中查找递归。谁能建议任何技术?

<xs:element name="nodes">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="node" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="node">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="node" maxOccurs="unbounded"/>
        <xs:element name="text" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

这里的"节点"在XSD中递归使用。我正在尝试编写一个 XSLT 来查找 XSD 中的递归元素。

以下 XPath 将查找所有也具有 ref 属性元素的元素

//xs:element[@name=//xs:element/@ref]/@name

下一个 XPath 将查找具有包含具有 ref 属性的相同元素的子元素的元素:

//xs:element[@name=descendant-or-self::xs:element/@ref]/@name

如果您想找到实现递归的所有可能方法,例如通过任意数量的中介进行递归,并通过导入的模式文档中的命名模型组进行递归,那就很难了。它相当于在 XSLT 中编写 XML 架构文档处理器(即将架构的 XML 表示形式转换为内部架构组件表示形式)。

您可能最好让其他人为您构建架构组件模型,并对其进行处理。Saxon提供了模式组件模型(SCM)的XML表示,Xalan为其提供了Java API。

相关内容

  • 没有找到相关文章

最新更新