XSLTでノードの属性の名前空間を指定する必要がないのはなぜですか?
例として、次のようなXMLがあるとします。
<?xml version="1.0"?>
<timeline xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:xmlsn:axpz_namespace">
<A>
<B>
<C key="in"> bval <\C>
<C ind="ra"> bra <\C>
</B>
<\A>
そして私のxslファイルヘッダーは次のようになります:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mms="urn:xmlsn:axpz_namespace">
Cの属性のselectステートメントは次のようになります。
select="./mms:B/mms:C[@key='in']"/>
select="./mms:B/mms:C[@ind='ra']"/>
しかし、それを指定する必要があり、mms名前空間の一部である場合は、それを指定する必要がB
あり、その名前空間の一部でもあるようです。つまりC
key
ind
select="./mms:B/mms:C[@mms:key='in']"/>
select="./mms:B/mms:C[@mms:ind='ra']"/>
ノードの名前空間を指定する場合は、そのmms
属性もそこにある必要があることは明らかですが、名前空間B
内を指定する場合は、そこにもある必要があることも同様に明らかです。mms
C
これは些細な質問かもしれませんし、使用しているXSLリーダーに依存する質問かもしれませんが、さまざまなノードに名前空間を混在させることができるかどうかについて興味があったので、質問しています。たとえば、次のようになります。
select="./mms:B/othernamespace:C[@mms:key='in']"/>
私はSaxon8Bリーダーを使用していますが、この構文は使用するリーダーに依存する可能性があると思います。