这是我的输入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放入节点中。如何才能做到这一点?
答案 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>
注意:以/
开头的路径是从根节点开始的绝对路径。