gpt4 book ai didi

xml - .xsl声明中的version属性是什么意思

转载 作者:行者123 更新时间:2023-12-03 16:10:03 25 4
gpt4 key购买 nike

我是xslt的新手,一些基本问题困扰着我。其中之一是:

当我使用xslt 2.0处理器时,version="1.0"在样式表中是什么意思。即使我(在样式表中)具有非1.0函数,即使我已将样式表版本显式声明为1.0,也将处理该函数。

对我来说,version属性似乎没有提供更多信息的属性。
它没有配置处理器。那么它的作用是什么?

另一个问题是:

(xslt处理器),(xslt样式表)和(xpath)的版本之间是否有任何关系?

先感谢您。

最佳答案

请参见http://www.w3.org/TR/xslt20/#backwards,如果XSLT 2.0处理器支持它,则version="1.0"启用向后兼容处理,则主要区别在于<xsl:value-of select="foo"/>输出带有第一个选定foo元素的字符串值的文本节点,而version="2.0"将输出所有选定的foo元素的值。

作为示例,请参见http://xsltransform.net/6r5Gh2R,它处理输入

<?xml version="1.0" encoding="UTF-8"?>
<root>
<items>
<item>foo</item>
<item>bar</item>
</items>
</root>


与样式表

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:output indent="yes"/>

<xsl:template match="/">
<result>
<result version="2.0">
<xsl:apply-templates/>
</result>
<result version="1.0">
<xsl:apply-templates mode="backwards"/>
</result>
</result>
</xsl:template>

<xsl:template match="@*|node()" mode="#all">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="#current"/>
</xsl:copy>
</xsl:template>

<xsl:template match="items">
<xsl:copy>
<xsl:value-of select="item"/>
</xsl:copy>
</xsl:template>

<xsl:template match="items" version="1.0" mode="backwards">
<xsl:copy>
<xsl:value-of select="item"/>
</xsl:copy>
</xsl:template>
</xsl:transform>


在不同模式下有两个 template match="items",而一个模板使用 version="1.0"时,样式表的结果是

<?xml version="1.0" encoding="UTF-8"?>
<result>
<result version="2.0">
<root>
<items>foo bar</items>
</root>
</result>
<result version="1.0">
<root>
<items>foo</items>
</root>
</result>
</result>


这表明 value-of select="item"评估的差异取决于 version

关于xml - .xsl声明中的version属性是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33390939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com