XPath式をXML文書と照合して検証できますが、その文書のスキーマに対して同じXPath式を簡単に検証できますか?XMLスキーマに対してXPath式を検証できますか?
は、私はこのようなXSDスキーマを持って言う:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... etc>
<xsd:element name="RootData">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="FirstChild">
<xsd:complexType>
<xsd:sequence minOccurs="0">
<xsd:element name="FirstGrandChild">
... etc etc
は、XPathことを確認するための簡単または組み込みの方法はあります:
/RootData/FirstChild/FirstGrandChild
は、任意のXML文書に対して有効になりますそのスキーマに基づいている可能性がありますか? (編集:私は潜在的に有効なを意味推測する。実際のXML文書には、それらの要素が含まれていないかもしれないが、そのXPathはまだスキーマのために潜在的に有効と考えられる/RootData/ClearlyInvalidChild/ThisElementDoesntExistEither
は明らかに無効である、と言うのに対し、。。)
もちろん、これは任意の複雑さよりも標準的なXPath式に対してのみ動作すると期待できますが、それは問題ありません。
私は具体的に.NETで考えていますが、他の実装で可能になったのか不思議です。私は私ができる知っているのに...
/xsd:schema/xsd:element[@name='RootData']/xsd:complexType/xsd:sequence/xsd:element[@name='FirstChild']/...etc...
:それは、例えば、私は本当に別のもののようにそのXPath式を変換するために自分自身のコードを記述する必要はありません、私は自分自身をロールするほど重要ではありません私が本当にしなければならなかったらそれをしなさい。
乾杯!
XPathはそのXSDに基づく*すべての*ドキュメントに対して有効ではありません。FirstChild(またはFirstGrandChild)が0回発生した場合、後で何をしているのかは分かりません。おそらく、XPathがそのスキーマに基づいていくつかの*文書に対して有効であることを意味します。どうか明らかにしてください。 – 13ren
もちろん、私は "潜在的に有効"を意味します。これは正式なXPathを参照することで私が得ているものですが、可能なXMLドキュメントも想定していることを明確にするために編集しました。 – Gavin
「正規のXPath式」には厳密な技術的定義があるとは思えません。ところで、単純な名前の場合、その変換は正規表現では簡単です(ネストされていないので、残念ながら名前付きの型では機能しません) – 13ren