2017-08-21 19 views
0

XSLTの新機能ですので、ここで助けてください。XSLT:テキストトークン化されたテンプレート内の前のノード値を取得する

私は私が正しくSKUにアクセスするにはどうすればよい

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="Meta" name="tokenize"> 
     <xsl:param name="separator" select="', '" /> 
     <xsl:for-each select="tokenize(.,$separator)"> 
          <ArticleNo><xsl:value-of select="../SKU"/>.<xsl:value-of select="position()" /></ArticleNo> 
     </xsl:for-each> 
    </xsl:template> 
    <xsl:template match="SKU" /> 

</xsl:stylesheet> 

動作しないXSLT以下で

<ArticleNo>60.1</ArticleNo> 
<ArticleNo>60.2</ArticleNo> 
<ArticleNo>60.3</ArticleNo> 
<ArticleNo>60.4</ArticleNo> 

<ArticleNo>70.1</ArticleNo> 
<ArticleNo>70.2</ArticleNo> 
<ArticleNo>70.3</ArticleNo> 
<ArticleNo>70.4</ArticleNo> 

にXML

<?xml version="1.0"?><?xml-stylesheet type="text/xsl"?> 
    <OrderLineItems> 
    <OrderLineItem> 
     <SKU>60</SKU> 
     <Meta>Topic: one, Topic: two, Topic: three, Topic: four</Meta> 
    </OrderLineItem> 
    <OrderLineItem> 
     <SKU>70</SKU> 
     <Meta>Topic: one, Topic: two, Topic: three, Topic: four</Meta> 
    </OrderLineItem> 
    </OrderLineItems> 

を次変換しようとしていますか? XSLT 2.0出力を用い

+0

'トークン化()' 'XSLT 2.0'機能とXSLT 1.0''では使用できません。あなたは 'XSLT 2.0'にアップグレードできますか? –

答えて

2

共有XSLに小さな微調整を行うことで達成することができます。 <SKU>の値を変数に追加して、目的の出力をフォーマットするために使用することができます。

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="Meta" name="tokenize"> 
     <xsl:param name="separator" select="', '" /> 
     <xsl:variable name="skuValue" select="../SKU" /> 
     <xsl:for-each select="tokenize(.,$separator)"> 
      <ArticleNo> 
       <xsl:value-of select="$skuValue" /> 
       . 
       <xsl:value-of select="position()" /> 
      </ArticleNo> 
     </xsl:for-each> 
    </xsl:template> 
    <xsl:template match="SKU" /> 
</xsl:stylesheet> 

出力

<ArticleNo>60.1</ArticleNo> 
<ArticleNo>60.2</ArticleNo> 
<ArticleNo>60.3</ArticleNo> 
<ArticleNo>60.4</ArticleNo> 
<ArticleNo>70.1</ArticleNo> 
<ArticleNo>70.2</ArticleNo> 
<ArticleNo>70.3</ArticleNo> 
<ArticleNo>70.4</ArticleNo> 
+0

理由はわかりませんが、私があなたのソリューションを試してもうまくいきません。私はいつも 'net.sf.saxon.s9api.SaxonApiException:スタイルシートのコンパイル中にエラーが報告されました'と表示されます。多分あなたは私の完全な例が必要でしょう –

+0

私は 'saxon9he.jar'を使って処理しています。 –

+0

私のせいです。今それは動作します。どうもありがとうございます。 –

関連する問題