2011-12-18 4 views
2

サンプルXMLファイルは私がサンプル出力以下を得ることができるように、私はXSLTに何を書くべき抽出タグ名、属性とその値は

<a> 
<apple color="red"/> 
<banana color="yellow"/> 
<sugar taste="sweet"/> 
<cat size="small"/> 
</a> 

の下に示されていますか?

<AAA>apple</AAA> 
<BBB>color</BBB> 
<CCC>red</CCC> 
<AAA>banana</AAA> 
<BBB>color</BBB> 
<CCC>yellow</CCC> 

以下は、私が書いたXSLTファイルですが、私は値を抽出する方法がわかりません。 bananaなどのため

<xsl:template match="*/*"> 
<AAA> 
    <xsl:value-of select="name()"/> 
</AAA> 
    <xsl:apply-templates select="@*"/> 
</xsl:template> 
<xsl:template match="@*"> 
<BBB> 
    <xsl:value-of select="name()"/> 
</BBB> 
</xsl:template> 

答えて

1

この変換

012:

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

<xsl:template match="*/*[not(self::sugar or self::cat)]"> 
    <AAA><xsl:value-of select="name()"/></AAA> 
    <BBB><xsl:value-of select="name(@*)"/></BBB> 
    <CCC><xsl:value-of select="@*"/></CCC> 
</xsl:template> 
</xsl:stylesheet> 

提供されるXML文書に適用

<AAA>apple</AAA> 
<BBB>color</BBB> 
<CCC>red</CCC> 
<AAA>banana</AAA> 
<BBB>color</BBB> 
<CCC>yellow</CCC> 

:仮定が行われ、一致する各要素が提供されるXML文書の場合の単一の属性を有すること

<a> 
    <apple color="red"/> 
    <banana color="yellow"/> 
    <sugar taste="sweet"/> 
    <cat size="small"/> 
</a> 

募集、正しい結果を生成します。テンプレートは、オートマッチ、コード

+0

完璧に〜ありがとう – OWLDummy

+0

@OWLDummy:あなたは大歓迎です。 –

1
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="apple"> 
    <AAA><xsl:value-of select="local-name()"/></AAA> 
    </xsl:template><!-- and then more of that for banana etc --> 

    <xsl:template match="@*|node()"><!-- copy template --> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

などなど、あなたはコピー(またはID)を知らない場合は、テンプレートのイディオムそれのためにグーグルに行きます。それがなければあなたのXSLTの人生は悲惨なものになるでしょう。

あなたのXMLが

<catalog> 
    <fruit> 
     <name>apple </name> 
     <color>red</color> 
    </fruit> 
    <fruit> 
     <name>banana </name> 
     <color>yellow</color> 
    </fruit> 
</catalog> 

XSLTなどのようにする必要があります

+0

でなければなりません ます。 上記のサンプルのXSLTコードの作業はかなり素敵な使用を許可するべきではありませんが、私はの値を抽出する方法がわかりませんそれは〜 – OWLDummy

2

<xsl:for-each select="catalog/fruit"> 
     <tr> 
     <td><AAA><xsl:value-of select="title"/></AAA></td> 
     <td><BBB>color</BBB></td> 
     <td><CCC><xsl:value-of select="color"/></CCC></td> 
     </tr> 
     </xsl:for-each> 
+0

私のXMLファイルは、そのように与えられた、間違いではありません – OWLDummy

関連する問題