プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。いつもお世話になっています

<a hoge="hoge">
<b id="1">
<b id="3">
</a>

<a hoge="hogehoge">
<b id="2">
</a>

このような構造のxmlで、xslを使用して

<b id="1">
<b id="2">
<b id="3">

のような出力を得たいと思っています。
<xsl:apply-templates><xsl:sort select="b" /><xsl:apply-templates>
では上手くいきませんでした。

何か方法があるでしょうか

A 回答 (2件)

><b id="2" />は表示しないものを作ってみました。


<xsl:template match="/">
<xsl:for-each select="//a/b[@id!='2']">
<xsl:sort select="./@id" data-type="number"/>
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:template>
としてみはどうでしょうか
    • good
    • 0
この回答へのお礼

ありがとうございます、試してみます。

お礼日時:2006/05/21 01:50

<xsl:template match="/">


<xsl:for-each select="//a/b">
<xsl:sort select="./@id" data-type="number"/>
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:template>

この回答への補足

投稿が遅くなってすみません。
-------------------------
質問の訂正
<xsl:apply-templates><xsl:sort select="b" /><xsl:apply-templates>

<xsl:apply-templates><xsl:sort select="b/@id" /><xsl:apply-templates>

<b ~~ >

<b ~~ />
-------------------------

これを他のxslからimportで参照して、そこで
<xsl:template match="b[id!='2']"></xsl:template>
のようにし、xsl毎に表示内容を変えたいと思っています。

試しに、<b id="2" />は表示しないものを作ってみました。

--style.xsl--
<xsl:for-each select="//a/b">
<xsl:sort select="./@id" />
<xsl:apply-templates /></xsl:for-each>

--style2.xsl--
style.xslをインポートする処理
<xsl:template match="b[@id!='2']" />
</xsl:template>

のようにすると、style2.xslのtemplateは無視されてしまいます。何か良い方法はあるでしょうか。

補足日時:2006/05/17 16:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!