2016-06-28 5 views
0

Я имею в XML и любит получать и сцепить значенияКаков правильный подход из двух?

Ниже приведен образец 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> 

Method1:

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

method2 :

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

Заранее благодарен.

ответ

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"/> 
Смежные вопросы