2014-02-03 5 views
0

У меня возникла проблема, и я ищу быстрое исправление. У меня есть XML, из которого я взять несколько значений:Конкретные значения для каждого из

<root> 
<item> 
<property1>value</property1> 
<property2>value</property2> 
<property3>value</property3> 
</item> 
<item>...</item> 
<item>...</item> 
<item>...</item> 
</root> 

Я делаю переменный для использования после использования:

<xsl:for-each select="root/item"><xsl:value-of select="concat(property1,';')"/></xsl:for-each> 

Но я столкнулся с проблемой, когда слишком много элементов, переменная становится слишком большой (более 255 символов). Поэтому я думал о том, чтобы принимать только уникальные значения (уникальные значения свойств).

Любой простой способ сделать это?

Благодаря

ответ

0

Пожалуйста, проверьте ниже таблицы стилей:

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

<xsl:key name="group" match="property1" use="."/> 

<xsl:variable name="unique_properties"> 
    <xsl:for-each select="//property1[count(. | key('group', .)[1]) = 1]"><!-- this selects unique values --> 
     <xsl:value-of select="concat(.,';')"/> 
    </xsl:for-each> 
</xsl:variable> 

    <xsl:template match="root"> 
     <xsl:value-of select="$unique_properties"/> 
    </xsl:template> 
</xsl:stylesheet> 
+0

работал с ключом. Большое спасибо, и жаль позднего ответа, это был действительно напряженный день :) – Mickey

+0

Хотя я немного изменил его ... :) Mickey

+0

Mickey

Смежные вопросы