2013-08-28 1 views
0

Я использую XSLT 1.0 для преобразования XML в HTML, однако я получаю нежелательный вывод. Почему я получаю "data.flow2" в мой комментарий сообщПочему я получаю вывод из других тегов? XML/XSLT

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 [текст комментария сообщ]

Почему я не получаю текст комментария сообщ на LY ??

Заранее спасибо :)

ответ

0

Потому что вы делаете value-of select=".", когда узел контекста является Comment. Строковое значение элемента определяется как конкатенация всех его текстовых узлов-потомков, поэтому для Comment это будет конкатенация содержимого элемента и CommentMsg.

Используйте вместо этого select="CommentMsg".

Смежные вопросы