2016-01-19 4 views
1
<Remittance> 
    <R A01="R" A02="14155304" A03="36132.49" A04="" A05="36132.49" A06="" A07="" /> 
    <N A01="N" A02="Hi" A03="" A04="" A05="" A06="" A07="" /> 
    <N A01="N" A02="This" A03="" A04="" A05="" A06="" A07="" /> 
    <N A01="N" A02="is" A03="" A04="" A05="" A06="" A07="" /> 
    <N A01="N" A02="concat" A03="" A04="" A05="" A06="" A07="" /> 
</Remittance> 

Я ищу, чтобы сцепить все значения A02 атрибутов элемента <N>Как сцепить одинаковые значения атрибутов в XSLT

Ожидаемый результат: "HiThisisconcat"

ответ

2

В XSLT 2.0, вы можете использовать string-join():

<xsl:value-of select="string-join(//N/@A02, '')"/> 

для возврата

HiThisisconcat 

в соответствии с запросом.

+0

Извините, что в моей машине он будет поддерживать только XSLT 1.0 –

2

В качестве альтернативы string-join() вы можете использовать <xsl:value-of select="//N/@A02" separator=""/>.

https://www.w3.org/TR/xslt20/#element-value-of

Если атрибут Сепаратор присутствует, то эффективное значение этот атрибут используется для разделения смежных элементов в результате последовательности ...

1

В XSLT 1.0

<xsl:for-each select="//N/@A02"> 
    <xsl:value-of select="."/> 
</xsl:for-each> 

Если y НУ нет никаких шаблонов, которые в противном случае соответствовали бы по этим признакам, вы могли бы просто использовать:

<xsl:apply-templates select="//N/@A02"/> 

Чтобы гарантировать, что никакие другие шаблоны не будут соответствовать, вы можете создать шаблон с режимом:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:template match="N/@A02" mode="concat"> 
    <xsl:value-of select="."/> 
    </xsl:template> 

    <xsl:template match="/"> 
    <xsl:apply-templates select="//N/@A02" mode="concat"/> 
    </xsl:template> 
</xsl:stylesheet> 
Смежные вопросы