我有一个XML文件,我需要使用XSL脚本进行转换。
以下是示例Feed。我需要在NameLabel
元素中提取文本,但我只需要前两个破折号之间的文本。
例如,我希望下面字符串中的A
:
NTX-的 A -20120131-0006
我不熟悉XPath,所以我很难将表达式组合在一起,但是我假设我需要使用substring-(之前的|之后)。我只是不确定如何。
示例XML:
<NewsML>
<NewsItem>
<Identification>
<NameLabel>NTX-A-20120131-0006</NameLabel>
</Identification>
</NewsItem>
</NewsML>
编辑:
我正在使用xslt 1.0
答案 0 :(得分:8)
substring-before(s1,s2) and substring-after(s1,s2) would work.
substring-before(substring-after(NewsML/NewsItem/Identification/NameLabel,'-'),'-')
答案 1 :(得分:1)
试
<xsl:template match="/">
<xsl:apply-templates select="NewsItem/NewsML/Identification"/>
</xsl:template>
<xsl:template match="Identification">
<xsl:value-of select="substring-before(substring-after(NameLabel,'-'),'-'))"/>
</xsl:template>
但是我无法测试这个
答案 2 :(得分:1)
如果您使用的是XSLT 2.0,那么更好的表达方式是:
fn:replace( NewsItem/NewsML/Identification, "^.*-(.)-.*$", $1)
但是如果你遇到XSLT 1,那就去Aepheus的答案。