【问题标题】:XSLT assign field value to variableXSLT 将字段值分配给变量
【发布时间】:2015-06-02 14:11:19
【问题描述】:

我是 xslt 的新手,遇到了一些看似简单的任务。我想从输入 xml 文件中获取一个字段的值,将其分配给一个变量并尝试输出该变量。看起来很简单,但似乎无法让它发挥作用?

XML 输入文件:

<?xml version="1.0"?>
<AUTHENTICATOR>
<LOGINID>johndoe</LOGINID> 
<DATE>06022015</DATE> 
<USERTOKEN> 
    <vLk3pRdlQXX1JcO2s1QzAJfU050>
</USERTOKEN> 
<USERINFO> 
    <field value="John" name="FirstName"/> 
    <field value="Doe" name="LastName"/> 
    <field value="johndoe@hotmail.com" name="Email"/> 
</USERINFO> 
</AUTHENTICATOR>

XSLT 转换文件:

<?xml version="1.0" encoding="UTF‐8"?>
<xsl:stylesheet version="1.0"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/AUTHENTICATOR">

<USERINFO>
    <!--Set Variables-->
    <xsl:variable name="UserName" select="field[@name='FirstName']"></xsl:variable>

    <!--Output Variables-->
    <xsl:text>First Name: </xsl:text>
    <xsl:value-of select="$UserName" />     
</USERINFO>

</xsl:template>
</xsl:stylesheet>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    (您的 XML 格式不正确...... vLk3pRdlQXX1JcO2s1QzAJfU050 标记未关闭)

    假设 XML 格式正确,以下 XSLT 应该可以工作...

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/AUTHENTICATOR">
        <USERINFO>
            <!--Set Variables-->
            <xsl:variable name="UserName" select="USERINFO/field[@name='FirstName']/@value"></xsl:variable>
            <!--Output Variables-->
            <xsl:text>First Name: </xsl:text>
            <xsl:value-of select="$UserName" />
        </USERINFO>
    </xsl:template>
    

    【讨论】:

      【解决方案2】:

      您应该注意上下文。当您匹配 Authenticator 节点时,您就处于该节点的上下文中。 xpath“字段”不会导致任何节点,因为上下文auf“Authenticator”中没有任何节点。不妨试试 USERINFO/field!

      【讨论】:

      • 我尝试添加 USERINFO 路径,但仍然无法正常工作?
      • 是的,您现在可能在变量中拥有正确的节点,但是您在结果文档中写入了该节点的字符串值。这是一个空字符串,因为您的信息位于变量的属性子项中。试试&lt;xsl:value-of select="$UserName/@value" /&gt;
      • 这似乎也没有。
      猜你喜欢
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多