Xml <;xsl:variable name=";pubDate“;选择=";“发布日期”/>;,节点集还是字符串?
我不熟悉xsl并使用1.0版 下面是一些xml源代码Xml <;xsl:variable name=";pubDate“;选择=";“发布日期”/>;,节点集还是字符串?,xml,xslt,Xml,Xslt,我不熟悉xsl并使用1.0版 下面是一些xml源代码 <?xml version="1.0"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <company>Columbia</company> <publi
<?xml version="1.0"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<company>Columbia</company>
<publicationDate>03/31/1985</publicationDate>
</cd>
</catalog>
皇帝讽刺剧
鲍勃·迪伦
哥伦比亚
03/31/1985
根据上面的xml内容,我在xsl代码中通过
<xsl:variable name="pubDate" select="//publicationDate" />
我认为变量“pubDate”应该包含一个节点集,因为“//publicationDate”,但后来我意识到
可以应用字符串函数,例如subString($pubDate,1,4),它提示“pubDate”也是一个字符串
这是某种自动类型转换还是其他类型?在XSLT1.0
$pubDate
中是一个节点集。如果在需要字符串值作为参数的函数中引用该值,它将使用节点集中第一个节点的字符串值。也就是说,它将获得节点和所有子节点的文本值。因此,如果您的第一个节点实际如下所示:
<publicationDate><mm>03</mm><dd>31</dd><yy>1985</yy></publicationDate>
然后,
$pubDate
包含一个“结果树片段”。您仍然可以在字符串函数中使用它,但在这种情况下,它实际上会使用整个结果树片段的字符串值。谢谢。所以变量的实际值/类型取决于函数的上下文,对吗?此外,“结果树片段”是2.0的东西,或同时适用于1.0和2.0?变量的类型保持不变,无论如何使用。它仍然是此实例中的节点集。只是函数可以从中提取字符串值,但变量仍然是一个节点集!结果树片段仅适用于XSLT1.0(请参阅)
<xsl:variable name="pubDate">
<xsl:copy-of select="//publicationDate" />
</xsl:variable>