Xml XSLT获取属性的值

Xml XSLT获取属性的值,xml,xslt,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&

这是我的输入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>

507
21
我的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放入节点中。如何做到这一点

这样试试:

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


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