XSLT获取属性值

时间:2018-11-16 15:47:22

标签: xml xslt

这是我的输入XML:

<?xml version="1.0" encoding="utf-8"?>
<Q Sequence="21" xsi:noNamespaceSchemaLocation="xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Response>
    <Message ID="507"></Message>
  </Response>
</Q>

这是我试图从XSLT获得的输出:

<?xml version="1.0" encoding="UTF-8"?>
<C>
    <Response>
        <ID>507</ID>
        <Sequence>21</Sequence>
    </Response>
</C>

我的XSLT无法产生预期的结果:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/Q">
    <C>
      <Response>
        <Id>
          <xsl:value-of select="/Message/@ID" />
        </Id>
      </Response>
    </C>
  </xsl:template>

</xsl:stylesheet>

这与我要达到的目标相去甚远,但这是一种更好的方法吗?目前,这不会将ID放入节点中。如何才能做到这一点?

1 个答案:

答案 0 :(得分:1)

尝试一下:

<xsl:template match="/Q">
    <C>
        <Response>
            <Id>
                <xsl:value-of select="Response/Message/@ID" />
            </Id>
            <Sequence>
                <xsl:value-of select="@Sequence" />
            </Sequence>
        </Response>
    </C>
</xsl:template>

注意:以/开头的路径是从根节点开始的绝对路径。