我一直在爭取這個XSL(Saxon/Java)代碼幾個小時,現在仍然無法確定。我變窄問題降低到這個片段:xsl:element + xsl:function = weirdness? (Saxon,Java)
<xsl:function name="my:fff" >
<xsl:element name="p0">
<p1 aaa='AAA' />
</xsl:element>
</xsl:function>
<xsl:function name="my:ggg">
<xsl:variable name="v" select="my:fff()" />
<!-- Debug messages -->
<xsl:message>
$v '<xsl:sequence select="$v" />'
$v/* '<xsl:sequence select="$v/*" />'
$v/*/@aaa '<xsl:value-of select="$v/*/@aaa" />'
$v/p0 '<xsl:sequence select="$v/p0" />'
</xsl:message>
...
</xsl:function>
由在my:ggg
打印的輸出如下所示:
$v '<p0><p1 aaa="AAA"/></p0>'
$v/* '<p1 aaa="AAA"/>'
$v/*/@aaa 'AAA'
$v/p0 ''
前三行的罰款。但是輸出空字符串的第四行很奇怪。我的意思是,如果$v
是<p0><p1 aaa="AAA"/></po>
(如第一行所示)那麼爲什麼$v/p0
不是<p1 aaa="AAA"/>
?
我錯過了什麼?
'$ v'是'my:fff'返回的元素,所以它*是*'包含子元素的標籤。 '$ v/p0'試圖選擇一個''作爲'$ v'中的標籤的子元素,因爲'$ v'選擇的標籤''不包含'',所以它是空的。 –
rsp
@rsp - 你應該讓這個答案,因爲它*是答案。 –
@唐,確定完成:) – rsp