Извлечение некоторых данных из XML - PullRequest
0 голосов
/ 15 февраля 2011
<block1>
  <tag>
    <name>59</name>
    <value>/00940001812410930828 FONDITEL VALORES AV SAU ATAM PEDRO TEIXERIA 8 PLANTA 7A 28020MADRID
    </value>
  </tag>
</block1>

Мне нужен вывод как 00940001812410930828 ,FONDITEL VALORES AV SAU ATAM PEDRO TEIXERIA 8 PLANTA 7A 28020MADRID

Может ли кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Это выражение XPath:

concat(
   substring-after(
      substring-before(
         /block1/tag/value,
         ' '
      ),
      '/'
   ),
   ' ,',
   substring-after(
      /block1/tag/value,
      ' '
   )
)

Или эта таблица стилей XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="value">
        <xsl:value-of select="substring-after(
                                 substring-before(
                                    /block1/tag/value,
                                    ' '
                                 ),
                                 '/'
                              )"/>
        <xsl:text> ,</xsl:text>
        <xsl:value-of select="substring-after(
                                 /block1/tag/value,
                                 ' '
                              )"/>
    </xsl:template>
</xsl:stylesheet>

И простое выражение XPath 2.0:

replace(/block1/tag/value,'/([^ ]* )(.*)','$1,$2')  
1 голос
/ 15 февраля 2011

Если я ничего не пропустил, попробуйте следующий подход:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="//value">
        <xsl:value-of select="substring-after('/', normalize-space(.))"/>
    </xsl:template>
</xsl:stylesheet>

Если вы хотите сконцентрироваться на обработке строк, вам, вероятно, следует подумать об улучшении разметки XML вместо этого.В противном случае работа со строковыми значениями с xslt 1.0 утомительна.(если вы используете 2.0, то для этой цели есть список предопределенных функций (например, fn: tokenize ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...