两者中哪种方法正确?

时间:2016-06-28 07:29:10

标签: xslt

我有一个XML,喜欢检索和连接值

以下是我们需要检索值的Sample XML:

<?xml version="1.0" encoding="UTF-8"?>
<Document>
<docBody>
  <employee>
     <employeeNumber>595</employeeNumber>
  </employee>
  <employeeAddress>
    <empAddress>1</empAddress>
    <empAddress2>1</empAddress2>
  </employeeAddress>
 </docBody>
 <Messages />
 </Document>

方法一:

<xsl:template match="employee">

<xsl:variable name="empNbr">
<xsl:value-of select="employeeNumber"/>
</xsl:variable>

<xsl:variable name="empAddress">
<xsl:value-of select="../employeeDetails/employeeAddress"/>
</xsl:variable>

 <xsl:variable name="empAddress2">
 <xsl:value-of select="../employeeDetails/empAddress2"/>
 </xsl:variable>

<xsl:value-of select="concat($empNbr,$empAddress,$empAddress2)"/>

</xsl:template>

方法2:

<xsl:template match="employee">

<xsl:value-of select="concat(<xsl:value-of select="employeeNumber"/>,
<xsl:value-of select="../employeeDetails/employeeAddress"/>,
<xsl:value-of select="../employeeDetails/empAddress2"/>)"/>

 </xsl:template>

提前致谢。

1 个答案:

答案 0 :(得分:0)

编写像这样的变量声明通常会更好

<xsl:variable name="empNbr" select="employeeNumber" />

这意味着empNbr现在直接引用employeeNumber。通过使用xsl:value-of,这有效地获取empNbr的文本值并将其分配给变量。

您的第二种方法无效XSLT。你正在寻找的表达是......

<xsl:value-of select="concat(employeeNumber, ../employeeDetails/employeeAddress, ../employeeDetails/empAddress2)" />

或者您可以有三个单独的xsl:value-of语句。

<xsl:value-of select="employeeNumber"/>
<xsl:value-of select="../employeeDetails/employeeAddress"/>
<xsl:value-of select="../employeeDetails/empAddress2"/>