как разобрать значение от xml до xsl - PullRequest
0 голосов
/ 18 апреля 2011
<block4>
  <tag>
    <name>50K</name>
    <value>/001/002/300060000120135670
CREDIT AGRICOLE ASSET MANAGEMENT</value>
  </tag>
</block4>

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

/001/002,/300060000120135670,CREDIT AGRICOLE ASSET MANAGEMENT

Я сделал это в XSL, но я не получил желаемый вывод.Кто-нибудь может дать мне некоторое представление о том, как я могу получить этот вывод?

<xsl:for-each select ="block4/tag[name = '50K']">
  <xsl:value-of  select="
    concat(
      substring(value,1,8),
      (concat(substring(value,9,'&#13;'),',')),
      substring-after(value,'&#13;')
    )
  " />,<xsl:text/>
</xsl:for-each>

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

concat принимает любое количество аргументов, нет необходимости вкладывать эти вызовы. Кроме того, substring принимает начало и необязательную длину, а не завершающий символ. Попробуйте что-то вроде этого:

<xsl:for-each select ="block4/tag[name = '50K']">
  <xsl:value-of select="
    concat(
      substring(value, 1, 8), ',',
      substring(substring-before(value,'&#xA;'),9), ',',
      substring-after(value,'&#xA;')
    )
  " />,<xsl:text/>
</xsl:for-each>

Я запомнил последнюю запятую, и это одна из многих вещей, которые вы на самом деле не указали.

0 голосов
/ 18 апреля 2011

Почему бы не использовать функцию XSLT 2.0 tokenize()? Смотри Здесь

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