2

XML の表示を XSL を使用して HTML にフォーマットする際に問題があります。

次の XML があります。

<?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>

次の行のセットは毎回異なる場合がありますが、すべて表示する必要があります。

誰か助けてくれませんか?

前もって感謝します。


更新 - 正しい解決策

<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> 
4

1 に答える 1

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 では、その名前の要素はルート要素ではありません。

一致させたくない場合は、 exceptError_Messageの下のすべての要素を使用します。Send_EmailSend_Email_lookupID

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

つまり、「Send_Emailという名前の要素を除く、その下にあるすべての要素Send_Email_lookupID

<xsl:value-of select="*"/>現在のノードのすべてのサブ要素内に含まれるテキストを出力するのに対し、現在のノードに含まれるテキストを出力することにも注意してください<xsl:value-of select="."/>。これが、この場合に必要なことです。

于 2012-04-11T21:31:44.740 に答える