<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
任何人都可以帮助我吗?
答案 0 :(得分:1)
如果我没有遗漏任何东西,请尝试以下方法:
<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)。
答案 1 :(得分:1)
这个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')