我最初创建了以下变量:
<xsl:variable as="document-node()" name="changesTexts">
<xsl:document>
<ps >
<p>Processed with <ptr target="#{$applicationID}"/>.</p>
<p>proofreading according to workflow 1.1.</p>
</ps>
</xsl:document>
</xsl:variable>
当我尝试像这样访问它
<xsl:variable name="p" select="$changesTexts//p"/>
它不起作用:结果为空item()。
将名称空间添加到根元素后,
<ps xmlns="http://www.music-encoding.org/ns/mei">
我可以通过以下方式访问所需的元素:
<xsl:variable name="p" select="$changesTexts//mei:p"/>
所以基本上我解决了我的问题,但是我想了解事情的运作方式。我不知道在第一种情况下元素会获得哪种默认名称空间。我尝试过:
此外,我在调试器中注意到,变量$ changesTexts的类型为document-node
,在其他情况下,当我使用fn:document()
时,变量的类型为document-node(1 )。所以显然有一些细微的差异(?)
答案 0 :(得分:1)
当您在XSLT中使用文字结果元素S在结果树中创建元素R时,R的扩展名将与S的扩展名相同:即,它将具有相同的本地名和相同的名称空间。
因此,由/usr/local/share/android-sdk
和<ps>
指令构造的元素的命名空间由样式表中声明的默认命名空间决定(可能在<p>
元素上,但可以在一些内部元素)。