コメントで述べたように、名前空間接頭辞と名前空間自体を混同してはなりません。名前空間は、主にURIで識別される抽象的なエンティティです。名前空間とそれらを識別するURIは普遍的なものです。名前空間接頭辞は文書固有のものです。単一のドキュメント内であっても、異なる名前空間接頭辞は同じ名前空間に対応している可能性があります(同じ名前空間URIにバインドされているかどうかによって判断されます)。 XSLTに対するその重要性は、特定の名前空間URIとの関連性に限定されています。
入力要素の例は、ローカル名は同じですが異なる名前空間接頭辞を使用します。これらの要素は、それぞれの接頭辞に関連付けられた名前空間宣言の範囲内になければなりません。そうでなければ、ソース文書はXML名前空間に準拠しません。さらに、両方の接頭辞に同じ意味を持つように要素名のローカル部分に依存しているという事実は、実際には接頭辞が同じ名前空間に関連付けられていると主張するアサーションです。
XSLTは、XPathの経由ではなく、文書中に文字通り登場修飾名ではなく、むしろその可能性が-nullの名前空間のURI、地元からなるペアを命じている彼らの拡大名前、によってノードに一致します修飾された名前の一部。したがって、入力文書の異なる名前空間接頭辞は無関係です。重要なのは、各プレフィックスがバインドされている名前空間URIです。
一方、XSLTは拡張名でノードを照合するため、ソース文書の要素名が属するnull以外の名前空間を考慮する必要があります。 XSLT 1.0では、スタイルシートにその名前空間の名前空間接頭辞を宣言して、それらの名前に関係する式が表示されるスコープにし、適切に接頭辞付きの名前を式に使用することでこれを行います。
<d:root xmlns:d="http://some.organization.com/Namespace">
<d:DICT>
<d:noConsultationDuTeleservice>2015071717689S</d:noConsultationDuTeleservice>
<d:noAffaireDeLexecutantDesTravaux>2015/181/A</d:noAffaireDeLexecutantDesTravaux>
</d:DICT>
</d:root>
あなたはこのようなXSLTを記述することがあります:このソース文書を与え例えば
、
ごとに異なる接頭辞を使用して入力文書用にも同様に動作します
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://some.organization.com/Namespace">
<xsl:template match="ns:root">
<noConsultation>
<xsl:value-of select="ns:DICT/ns:noConsultationDuTeleservice"/>
</noConsultation>
</xsl:template>
</xsl:stylesheet>
<t:root xmlns:t="http://some.organization.com/Namespace">
<t:DICT>
<t:noConsultationDuTeleservice>2015071717689S</t:noConsultationDuTeleservice>
<t:noAffaireDeLexecutantDesTravaux>2015/181/A</t:noAffaireDeLexecutantDesTravaux>
</t:DICT>
</t:root>
名前空間*接頭辞*を名前空間と混同しないでください。後者は、接頭辞が使用されているスコープ内の接頭辞にバインドされたURIによって識別されます。 XSLTはこれを理解しています。したがって、ソース文書は、正しいURI(XSLTも参照する)にバインドされている限り、好きな名前空間接頭辞を使用できます。それはおそらくあなたが扱っている場合ですが、もしそうでなければ、[mcve]で明確にしてください。 –
私は理解しますが、これがどのように私に役立つのですか? – ericire
オクラホマが似ていることを確認しました 違うプレフィックスで遊ぶ方法は? – ericire