I';我无法在XSLT中获得所需的值

I';我无法在XSLT中获得所需的值,xslt,Xslt,这是输入: <Data> <A_ID>123456789</A_ID> <A_Code>ojhgf</A_Code> <A_Rec> <inner1>2345</inner1> <inner2>14April</inner2> <inner3>15November</inner3

这是输入:

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

123456789
ojhgf
2345
4月14日
11月15日
这是我的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值。我该怎么办?

您应该使用“数据/A\u ID”。假设您的上下文节点不是“数据”,因为我没有看到其他错误。

您应该使用“数据/A\u ID”。假设您的上下文节点不是“数据”,因为我没有看到其他错误。

您应该使用“数据/A\u ID”。假设您的上下文节点不是“数据”,因为我没有看到其他错误。

您应该使用“数据/A\u ID”。假设您的上下文节点不是“数据”,因为我没有看到其他错误。

一旦创建,XSLT变量就不能更改其值。 有一个非常好的答案可以帮助您重新设计XSLT


编辑:Lingamurthy CS已正确识别XPath存在问题,但请查看我链接的SO页面,因为它可能仍然有用。

一旦创建,XSLT变量就无法更改其值。 有一个非常好的答案可以帮助您重新设计XSLT


编辑:Lingamurthy CS已正确识别XPath存在问题,但请查看我链接的SO页面,因为它可能仍然有用。

一旦创建,XSLT变量就无法更改其值。 有一个非常好的答案可以帮助您重新设计XSLT


编辑:Lingamurthy CS已正确识别XPath存在问题,但请查看我链接的SO页面,因为它可能仍然有用。

一旦创建,XSLT变量就无法更改其值。 有一个非常好的答案可以帮助您重新设计XSLT


编辑:Lingamurthy CS已正确识别XPath存在问题,但请查看我链接的SO页面,因为它可能仍然有用。

您似乎希望在具有不同命名空间的不同节点中输出
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>

您似乎希望在具有不同名称空间的不同节点中输出
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>

您似乎希望在具有不同名称空间的不同节点中输出
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>

您似乎希望在具有不同名称空间的不同节点中输出
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>



在援助声明中,是吗?我认为最好显示您期望的输出。询问尝试的解决方案(变量和每个变量)是没有意义的,因为它可能不会有任何结果。向我们展示您试图实现的目标,我们可以指出如何在XSLT中实现它$AID应该保持123456789,但是我在for each循环之外获得了所需的值。如果我在
内部使用您的样式表,…
。我正在得到你想要的输出。我使用的是萨克森6.5.5。你用的是什么处理器?谢谢Joel。它现在对我有用:)。在《援助宣言》中是这样吗?我认为最好能显示出你所期望的产出。询问尝试的解决方案(变量和每个变量)是没有意义的,因为它可能不会有任何结果。向我们展示您试图实现的目标,我们可以指出如何在XSLT中实现它$AID应该保持123456789,但是我在for each循环之外获得了所需的值。如果我在
内部使用您的样式表,…
。我正在得到你想要的输出。我使用的是萨克森6.5.5。你用的是什么处理器?谢谢Joel。它现在对我有用:)。在《援助宣言》中是这样吗?我认为最好能显示出你所期望的产出。询问尝试的解决方案(变量和每个变量)是没有意义的,因为它可能不会有任何结果。向我们展示您试图实现的目标,我们可以指出如何在XSLT中实现它$AID应该保持123456789,但是我在for each循环之外获得了所需的值。如果我在
内部使用您的样式表,…
。我正在得到你想要的输出。我使用的是萨克森6.5.5。你用的是什么处理器?谢谢Joel。它现在对我有用:)。在《援助宣言》中是这样吗?我认为最好能显示出你所期望的产出。询问尝试的解决方案(变量和每个变量)是没有意义的,因为它可能不会有任何结果。向我们展示您试图实现的目标,我们可以指出如何在XSLT中实现它$AID应该保持123456789,但是我在for each循环之外获得了所需的值。如果我在
内部使用您的样式表,…
。我正在得到你想要的输出。我使用的是萨克森6.5.5。你用的是什么处理器?谢谢Joel。它现在对我起作用:)。我在foreach循环之外获取值。只有在它的内部,我才能在foreach循环之外获得值。只有在它里面是空的,我得到的是foreach l之外的值