Xml XPath子字符串
我有一个需要使用XSL脚本转换的XML文件 下面是一个示例提要。我需要提取Xml XPath子字符串,xml,xslt,xpath,Xml,Xslt,Xpath,我有一个需要使用XSL脚本转换的XML文件 下面是一个示例提要。我需要提取namelab元素中的文本,但我只需要前两个破折号之间的文本 例如,我希望A位于下面的字符串中: NTX-A-20131-0006 我不太精通XPath,所以我很难组合一个表达式,但是我假设我需要使用substring-(after | before)。我只是不知道怎么做 示例XML: <NewsML> <NewsItem> <Identification>
namelab
元素中的文本,但我只需要前两个破折号之间的文本
例如,我希望A
位于下面的字符串中:
NTX-A-20131-0006
我不太精通XPath,所以我很难组合一个表达式,但是我假设我需要使用substring-(after | before)。我只是不知道怎么做
示例XML:
<NewsML>
<NewsItem>
<Identification>
<NameLabel>NTX-A-20120131-0006</NameLabel>
</Identification>
</NewsItem>
</NewsML>
NTX-A-20131-0006
编辑:
我正在使用XSLT1.0
<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>
但是我无法测试这个如果您使用的是XSLT 2.0,那么更好的表达式应该是:
substring-before(s1,s2) and substring-after(s1,s2) would work.
substring-before(substring-after(NewsML/NewsItem/Identification/NameLabel,'-'),'-')
fn:replace( NewsItem/NewsML/Identification, "^.*-(.)-.*$", $1)
但是,如果您仍然坚持使用XSLT1,那么请使用Aepheus的答案。哪个版本的XSLT?1还是2?