2017-04-13 8 views
0

の値に基づいて:カテゴリの数をすることができXSLT挿入ノード私のXMLは次のようになります子供

<Articles> 
     <Article> 
      <Position>Title</Position> 
      <Titlename>Food</Titlename> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Food</Categorie> 
      <ProductName>Apple</ProductName> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Food</Categorie> 
      <ProductName>Pineapple</ProductName> 
     </Article> 
     <Article> 
      <Position>Title</Position> 
      <Titlename>Drinks</Titlename> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Drinks</Categorie> 
      <ProductName>Water</ProductName> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Drinks</Categorie> 
      <ProductName>CocaCola</ProductName> 
     </Article> 
</Articles> 

<Articles> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Food</Categorie> 
      <ProductName>Apple</ProductName> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Food</Categorie> 
      <ProductName>Pineapple</ProductName> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Drinks</Categorie> 
      <ProductName>Water</ProductName> 
     </Article> 
     <Article> 
      <Position>Body</Position> 
      <Categorie>Drinks</Categorie> 
      <ProductName>CocaCola</ProductName> 
     </Article> 
</Articles> 

変換した後、それは次のようになります。変数、ので、私は、<Categorie>の値が最初のものかどうかをチェックするXLSTスタイルシートが必要です。

それがある場合、それは記事の上にこの部分をコピーしてください:ここでは

 `<Article> 
     <Position>Title</Position> 
     <Titlename>Food</Titlename> 
     </Article>` 

は私の試みです:

重要

iはv1.0のに制限されてる知って

<xsl:for-each select="Article"> 
    <xsl:if test="Position/Categorie = First()"> 
     <Article> 
      <Position><xsl:value-of Select ="Title"></Position> 
      <Titlename><xsl:value-of Select ="Categorie"></Titlename> 
     </Article> 
    </xsl:if> 


     <Article> 
      <Position><xsl:value-of Select ="Position"></Position> 
      <Categorie><xsl:value-of Select ="Categorie"></Categorie> 
      <ProductName><xsl:value-of Select ="ProductName"></ProductName> 
     </Article> 
</xsl:for-each> 
+0

あなたは、グループ内の**最初のノードの前に**していないあなたは「最後のノードの後に​​挿入ノード* *」と言っていますが、どういう意味ですか? –

答えて

0

あなたがしたいと思う:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/Articles"> 
    <xsl:copy> 
     <xsl:for-each select="Article"> 
      <xsl:if test="not(Categorie=preceding-sibling::Article/Categorie)"> 
       <Article> 
        <Position>Title</Position> 
        <Titlename> 
         <xsl:value-of select="Categorie"/> 
        </Titlename> 
       </Article> 
      </xsl:if> 
      <xsl:copy-of select="."/> 
     </xsl:for-each>  
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

ありがとうございました。私が探していたものです。 – Myru

関連する問題