Xml XPath子字符串

Xml XPath子字符串,xml,xslt,xpath,Xml,Xslt,Xpath,我有一个需要使用XSL脚本转换的XML文件 下面是一个示例提要。我需要提取namelab元素中的文本,但我只需要前两个破折号之间的文本 例如,我希望A位于下面的字符串中: NTX-A-20131-0006 我不太精通XPath,所以我很难组合一个表达式,但是我假设我需要使用substring-(after | before)。我只是不知道怎么做 示例XML: <NewsML> <NewsItem> <Identification>

我有一个需要使用XSL脚本转换的XML文件

下面是一个示例提要。我需要提取
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?