0

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 で再帰的に使用されます。XSD で再帰要素を検索する XSLT を作成しようとしています。

4

2 に答える 2

0

次の XPath は、ref 属性を持つ要素も持つすべての要素を検索します。

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

次の XPath は、ref 属性を持つ同じ要素を含む子を持つ要素を検索します。

//xs:element[@name=descendant-or-self::xs:element/@ref]/@name
于 2013-10-01T11:18:08.250 に答える
0

再帰を実現するすべての可能な方法を見つけたい場合、たとえば、任意の数の仲介者を介した再帰、およびインポートされたスキーマ ドキュメント内の名前付きモデル グループを介した再帰を見つけたい場合は、かなり困難です。これは、XSLT で XML スキーマ ドキュメント プロセッサ (つまり、スキーマの XML 表現を内部スキーマ コンポーネント表現に変換するプロセッサ) を記述することになります。

おそらく、他の誰かにスキーマ コンポーネント モデルを作成してもらい、それに取り組んだほうがよいでしょう。Saxon はスキーマ コンポーネント モデル (SCM) の XML 表現を提供し、Xalan はそれに Java API を提供します。

于 2013-10-01T16:09:55.660 に答える