2012-04-11 5 views
2

XSLを使用してXMLの表示をフォーミュレーションする際に問題があります。XML/XSLTトランスフォームロジック/ステートメント/特定の行を隠す

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Send_Email> 
<Send_Email_lookupID>HIDE_REJECT</Send_Email_lookupID> 
<Error_Message>REJECT1</Error_Message> 
<Error_Message>REJECT2</Error_Message> 
<Error_Message>REJECT3</Error_Message> 
</Send_Email> 

とXSL:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<html> 
<body> 
<h2>Result</h2> 
<table border="1"> 
<xsl:for-each select="/Send_Email"> 
<xsl:if test="not(/Send_Email_lookupID)"> 
<tr> 
<td><xsl:value-of select="*"/></td> 
</tr> 
</xsl:if> 
</xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

この行は常に静的であり、非表示にする必要があります。ラインの

<Send_Email_lookupID>HIDE_REJECT</Send_Email_lookupID> 

次のセットを

私は、次のXMLを持っています毎回異なる場合がありますが、すべて表示する必要があります。

誰でもお手伝いできますか?

ありがとうございました。


アップデート - 正しい解決策

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<html> 
<body> 
<h2>Result</h2> 
<table border="1"> 
<xsl:for-each select="Send_Email/*[local-name()!='Send_Email_lookupID']"> 
<tr> 
<td><xsl:value-of select="."/></td> 
</tr> 
</xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

答えて

2

私はあなたがそれぞれのエラーメッセージの1行を持つテーブルをしたいと仮定 - あなたが探していることであるより:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <html> 
     <body> 
     <h2>Result</h2> 
     <table border="1"> 
      <xsl:for-each select="Send_Email/Error_Message"> 
      <tr> 
       <td><xsl:value-of select="."/></td> 
      </tr> 
      </xsl:for-each> 
     </table> 
     </body> 
    </html> 
    </xsl:template> 

</xsl:stylesheet> 

/Send_Email_lookupID試合ルート要素は/で始まるためですが、XMLではその名前の要素はルート要素ではありません。

あなただけError_Messageが、Send_Email_lookupID使用除くSend_Email下のすべての要素と一致しない場合:

  <xsl:for-each select="Send_Email/*[local-name()!='Send_Email_lookupID']"> 

Send_Email_lookupIDという名前のものを除くSend_Emailの下にあるすべての要素を意味します。

<xsl:value-of select="*"/>は、現在のノードのすべてのサブ要素に含まれるテキストを出力します。一方、<xsl:value-of select="."/>は、現在のノードに含まれるテキストを出力します。

+0

ノードの値に基づいて非表示にする場合は、を使用します。 – Nat

+0

それでも私のためにnullを返します。新しいXSLTを元の質問に投稿します。 – gp80586

+0

申し訳ありません - タイプミス - 'select ="でなければなりません。 " - 私の答えは固定 – MiMo

関連する問題