为什么我要从其他标签获得输出?XML/XSLT



我正在使用XSLT1.0将XML转换为HTML,但是我得到了不需要的输出。为什么我在我的评论消息中得到"data.flow2"

XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<CommentsList>
  <Comment>
    <CommentBy>data.flow2</CommentBy>
    <CommentMsg>Set Under Study</CommentMsg>
  </Comment>
  <Comment>
    <CommentBy>data.flow2</CommentBy>
    <CommentMsg>True Files</CommentMsg>
  </Comment>
  <Comment>
    <CommentBy>data.flow2</CommentBy>
    <CommentMsg>
      <![CDATA[<a     href='http://eservices.saudieng.sa/Attachments/DataFlowReports/ce2cd49ac33e45edb8902c7d074d    908a.pdf'>Download the Report</a>]]> </CommentMsg>
  </Comment>
</CommentsList>

这是xslt:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  <xsl:template match="/">
    <html>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
 </xsl:template>
    <xsl:template match="CommentsList">
      <table border="1">
        <tr style="background-color:lightblue">
          <td>Comment By</td>
          <td>Comment Msg</td>
          <td>Comment Date</td>
        </tr>
        <xsl:for-each select="/CommentsList/Comment">
          <tr>
            <td>
              <xsl:value-of select="CommentBy"/>
            </td>
            <xsl:choose>
              <xsl:when test="/CommentsList/Comment[3]/CommentMsg">
                <td>
                  <CommentMsg>
                    <xsl:copy-of select="@*"/>
                    <xsl:value-of select="." disable-output-escaping="yes"/>
                  </CommentMsg>
                </td>
              </xsl:when>
              <xsl:otherwise>
                <td>
                  <xsl:apply-templates select="."/>
                  <xsl:value-of select="text()"/>
                </td>
             </xsl:otherwise>
            </xsl:choose>

          </tr>
        </xsl:for-each>
      </table>
    </xsl:template>
</xsl:stylesheet>

注释消息的输出如下:

data.flow2[注释消息文本]

为什么我只收到评论短信??

提前感谢:)

因为当上下文节点是Comment时,您正在执行value-of select="."。元素的字符串值被定义为其所有子代文本节点的串联,因此对于Comment,这将是CommentByCommentMsg元素内容的串联。

请改用select="CommentMsg"

相关内容

  • 没有找到相关文章

最新更新