2012-02-23 9 views
3

XSLスクリプトを使用して変換する必要があるXMLファイルがあります。XPathサブストリング

以下はフィードの例です。 NameLabel要素のテキストを抽出する必要がありますが、最初の2つのダッシュの間のテキストのみが必要です。

例えば、私は以下の文字列でAをしたい:

NTX- -20120131-0006

私がよくするXPathに精通していないので、私は一緒に置くのに苦労していますしかし、私はsubstring-(前|後)を使う必要があると仮定しています。私はちょうど方法がわからない。

サンプルXML:

<NewsML> 
    <NewsItem> 
     <Identification> 
      <NameLabel>NTX-A-20120131-0006</NameLabel> 
     </Identification> 
    </NewsItem> 
</NewsML> 

編集:私は、XSLT 1.0

+0

どのバージョンのxslt? 1または2? – mindandmedia

+0

私はxslt 1を使用しています。 – Steve

答えて

7
substring-before(s1,s2) and substring-after(s1,s2) would work. 

substring-before(substring-after(NewsML/NewsItem/Identification/NameLabel,'-'),'-') 
をテストすることができませんでした
+0

完璧、ありがとう。 – Steve

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> 

を試してみてくださいしかし、私はこの

1

あなたがXSLT 2.0を使用している場合は、より良い表現は次のようになります。

fn:replace(NewsItem/NewsML/Identification, "^.*-(.)-.*$", $1) 

しかし、あなたは、XSLT 1で立ち往生している場合は、Aepheusの答えを持って行きます。