2012-01-19 53 views
3

xsltに要素が存在する場合はテキストノードを表示し、存在しない場合は何も表示しないという節を書く必要があります。私は、テキストノードが特定の単語であるかどうかを書く方法を見つけることができますが、その要素が存在するかどうかはわかりません。xsl:if-if要素が存在する

アドバイスをいただければ幸いです。

PS:新/ XMLなど

例:XSLTする:XMLはページを含むブックを表します。ページの1つのバージョンにヘッダーがあります。 Underneathは4列20行のテーブルです。これはフッターです。このフッターは他のバージョンのページにはありません。私のxsltはxmlをこれを視覚的に表すWebページに変換する必要があります。

したがって、xmlは<Footer>の要素を持ち、スキーマにminOccursが0です。

+0

入力と予想出力の例を示してください。 –

答えて

4

これは、比較を省略することによって行うことができます。

<xsl:if test='root/element'> 

しかし、きれいな方法は、最終的にあなたが欲しいものを得ることがXSLを使用することです:テンプレート

だから、XML

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <page> 
    <title>Franks</title> 
    <header>header text</header> 
    <bodytext>here is the body text</bodytext> 
    </page> 
    <page> 
    <title>Joes</title> 
    <footer>footer text</footer> 
    <bodytext>here is the body text2</bodytext> 
    </page> 
</root> 

ためのxsl

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="/"> 

     <xsl:apply-templates select="page"></xsl:apply-templates> 
    </xsl:template> 

    <xsl:template match="page"> 
    <h1> 
     <xsl:value-of select="title"/> 
    </h1> 
    <p> 
     <xsl:value-of select="bodytext"/> 
    </p> 
    <xsl:apply-templates select="footer"/> 
    </xsl:template> 

    <xsl:template match="footer"> 
    <p> 
     <xsl:value-of select="."/> 
    </p> 
    </xsl:template> 
</xsl:stylesheet> 

は、この方法を示していますすることができます。選択の詳細については、 w3schools xpath tutorialをご覧ください。

+0

ありがとうございます!あなたがテキストとしての道しか持てないことに気付かなかった。 1つの質問 - なぜあなたは ''を使うのですか? – nevermind

+0

良い点。かわった。 – Nat

関連する問題