0

XML スキーマ ファイル内の要素、simpleTypes、complexTypes のすべての制限 (minOccurs、maxOccurs、totalDigits、maxLength など) を取得しようとしています。これらの制限は子要素にあるため、属性「name」の値とともに、xsd:element、xsd:simpleType、および xsd:complexType ごとにこれらの制限要素を選択できる必要があります。次に、結果セットを要素ごとにループし、各要素の制限をテーブルに入力します。

残念ながら、そのような XPath 式を作成することはできません。多分それも不可能ですか?これは私がこれまでに持っているものです:

//*[xsd:element[@name] or xsd:simpleType[@name] or xsd:complexType[@name]]//xsd:restriction/descendant::*

これにより、minOccurs などの制限が適用されますが、@name-value を持つ親要素が必要です。

4

1 に答える 1

2

第 1 に、XML レベルで生のスキーマ ドキュメントを処理することは、スキーマの作成者が言語を特定の方法で使用していることがわかっていない限り困難です。同じことを記述する方法が多すぎる (たとえば、モデル グループ、属性グループ、xs:include、名前付き型と匿名型などを使用するなど)。スキーマ API を使用してコンパイル済みスキーマにアクセスするか、コンパイル済みスキーマの XML 表現である Saxon の SCM を使用することで、この問題を回避できます。 XML 表現。

2 番目に、「テーブルを埋めたい」と結果で言います。つまり、必要な結果は、単純な文字列、数値、またはノード セットよりも複雑です。したがって、あなたは XPath のドメインの外にいて、XQuery または XSLT に入っています。構造化された結果を構築したいのです。

于 2013-02-05T11:19:11.387 に答える