是否允许在属性值中使用XPath函数

时间:2015-10-08 07:50:45

标签: xslt xpath

是否可以用XPath表达式替换tag属性的值。 即:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:import href="../Product/templates.xsl"/>
    <xsl:output method="xml"/>

    <xsl:template name="root" match="/">
        <test-report start="substring(abcd, 1, 2)" stop="2015-10-07 16:54.103">
            <xsl:call-template name="temp"/>
        </test-report>
    </xsl:template>


    <xsl:template name="temp">
       <xsl:value-of select="'TEXT_RIKO'"/>
    </xsl:template>

输出

 <?xml version="1.0" encoding="UTF-8"?>
 <test-report start="substring(abcd, 1, 2)" stop="2015-10-07 16:54.103">
    TEXT_RIKO
 </test-report>

我想要的是(在输出文件中)start属性的值是函数 substring 的输出,即ab

谢谢!

1 个答案:

答案 0 :(得分:3)

答案是&#34;是&#34;,但您需要使用Attribute Value Templates来执行此操作。

只需写下

<test-report start="{substring(abcd, 1, 2)}" stop="2015-10-07 16:54.103">

花括号表示要计算的表达式而不是字面输出。