2013-11-14 3 views
0
papa francesco rossi; figlio giuseppe rossi; nipote bartolomeo rossi 

Я хотел бы разбить эту запись на ";" и считать ";" знакxslt объект дерево создать структуру

Можете ли вы дать некоторые инструкции по этому вопросу?

Я помню, что в визуальных базовых существуют функции SPLIT .... звук familar ?? Благодарю.

<familiari>papa francesco rossi; figlio giuseppe rossi; nipote bartolomeo rossi</familiari> 

в выходной я хотел бы:

; ; nipote Бартоломео Rossi
это мой XML-код:

<p> 
    <FAMILIARI>papa francesco rossi; figlio giuseppe rossi; nipote bartolomeo rossi</FAMILIARI> 
    <FAMILIARI>papa francesco rossi; figlio giuseppe rossi; nipote giuseppe contarino</FAMILIARI> 
    <FAMILIARI>papa francesco rossi; figlio giuseppe rossi; nipote antonio mazzarino</FAMILIARI> 
</p> 

Я хотел бы эту структуру на выходе:

-papafrancesco rossi 
--figlio giuseppe rossi 
---nipote bartolomeo rossi 
---nipote giuseppe contarino 
---nipote antonio mazzarino 
+0

Для получения дополнительной информации, это напрямую связано с [этот вопрос] (http://stackoverflow.com/questions/19957491) со вчерашнего дня. К сожалению, я не могу помочь, поскольку я не уверен, как вы можете это сделать. Плюс, @franscescoi, вы скопировали вопрос и дали два разных выхода - первый результат, на который я ответил вчера – freefaller

+0

i nedd help :-) –

+0

это для меня, например: у меня есть эта структура структуры papa francesco rossi; figlio giuseppe rossi; nipote bartolomeo //// papa francesco rossi; figlio giuseppe rossi; nipote peppino /// papa francesco rossi; figlio giuseppe rossi; nipote carmelo ... вы можете видеть, что изменение последнего элемента, а другое - то же самое. посмотрите новый запрос. –

ответ

1

здание от того, что @freefaller сделал для вас с вашим previous question. Вот что я придумал:

<xsl:call-template name="getFinalText"> 
    <xsl:with-param name="text" select="text()"/> 
    <xsl:with-param name="prev_text" select="preceding-sibling::familiari[1]"/> 
    <xsl:with-param name="iteration" select="1"/> 
</xsl:call-template> 

вот шаблон, который он называет.

<xsl:template name="getFinalText"> 
    <xsl:param name="text"/> 
    <xsl:param name="prev_text"/> 
    <xsl:param name="iteration"/> 
    <xsl:choose> 
    <xsl:when test="contains($text,';')"> 
     <xsl:if test="not(substring-before($text,';')=substring-before($prev_text,';'))"> 
     <xsl:call-template name="semicolon"> 
      <xsl:with-param name="count" select="0"/> 
      <xsl:with-param name="iteration" select="$iteration"/> 
     </xsl:call-template> 
     <xsl:value-of select="substring-before($text,';')"/> 
     <xsl:text xml:space="preserve">&#10;</xsl:text> 
     </xsl:if> 
     <xsl:call-template name="getFinalText"> 
     <xsl:with-param name="text" select="substring-after($text,';')"/> 
     <xsl:with-param name="prev_text" select="substring-after($prev_text,';')"/> 
     <xsl:with-param name="iteration" select="$iteration + 1"/> 
     </xsl:call-template> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:call-template name="semicolon"> 
     <xsl:with-param name="count" select="0"/> 
     <xsl:with-param name="iteration" select="$iteration"/> 
     </xsl:call-template> 
     <xsl:value-of select="$text"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

И вот шаблон с запятой.

<xsl:template name="semicolon"> 
    <xsl:param name="count"/> 
    <xsl:param name="iteration"/> 
    <xsl:if test="$count &lt; $iteration"> 
    <xsl:text>;</xsl:text> 
    <xsl:call-template name="semicolon"> 
     <xsl:with-param name="count" select="$count + 1"/> 
     <xsl:with-param name="iteration" select="$iteration"/> 
    </xsl:call-template> 
    </xsl:if> 
</xsl:template> 

Это работало для меня на игровой площадке XML. Кстати, спасибо @freefaller за упоминание об этом в предыдущем вопросе. Это было ново для меня, и так полезно.

+0

У вас есть электронная почта, чтобы помочь мне в простой функции проекта? –

+0

Как @freefalling, я бы предпочел не публиковать свою электронную почту. Добавление вопроса было бы лучше. Вы можете ссылаться на него в комментарии, и я могу попытаться помочь. –

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