这是输入:
<Data>
<A_ID>123456789</A_ID>
<A_Code>ojhgf</A_Code>
<A_Rec>
<inner1>2345</inner1>
<inner2>14April</inner2>
<inner3>15November</inner3>
</A_Rec>
</Data>
这是我的XSLT:
<xsl:variable name="AID" select="A_ID" />
<xsl:variable name="ACode" select="A_Code" />
<xsl:for-each xmlns:sch="http://schemas.w3.com/" select="//A_Rec">
<sch:COMPANY>
<xsl:value-of select="$AID" />
</sch:COMPANY>
<sch:COMPANY_CODE>
<xsl:value-of select="$ACode" />
</sch:COMPANY_CODE>
</xsl:for-each>
我想在下面提到的行中获得值“123456789”。 $ AID应该保持123456789,但我在for-each循环之外获得了所需的值。 但我没有在公司和公司代码的for-each循环中获得AID和ACode值。我该怎么办?
答案 0 :(得分:1)
您应该使用&#34; Data / A_ID&#34;。假设您的上下文节点不是&#34;数据&#34;因为我没有看到别的错误。
答案 1 :(得分:1)
创建后,XSLT变量无法更改其值。 有一个非常好的SO答案here可以帮助您重新设计XSLT。
编辑:Lingamurthy CS已正确识别您的XPath存在问题,但请查看我已链接的SO页面,因为它仍然可能有用。
答案 2 :(得分:1)
您似乎希望在具有不同命名空间的不同节点中输出A_ID
和A_Code
。
请改为尝试:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="/">
<root xmlns:sch="http://schemas.w3.com/">
<xsl:apply-templates select="Data/A_ID|Data/A_Code"/>
</root>
</xsl:template>
<xsl:template match="Data/A_ID">
<xsl:element name="sch:COMPANY" namespace="http://schemas.w3.com/">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="Data/A_Code">
<xsl:element name="sch:COMPANY_CODE" namespace="http://schemas.w3.com/">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>