Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml <;xsl:variable name=";pubDate“;选择=";“发布日期”/>;,节点集还是字符串?_Xml_Xslt - Fatal编程技术网

Xml <;xsl:variable name=";pubDate“;选择=";“发布日期”/>;,节点集还是字符串?

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

我不熟悉xsl并使用1.0版

下面是一些xml源代码

<?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>