簡體   English   中英

XSL不使用Wicket XsltTransformerBehavior顯示值

[英]XSL doesn't display value using Wicket XsltTransformerBehavior

我編寫了一個Wicket應用程序,該應用程序應該使用XSL查看基本XML。 當我在w3schools教程中讓代碼解析時,一切正常。 當我使用Wickets XsltTransformerBehavior時,我只看到基本的表結構,但是沒有任何值。

XML:

<ecgreport timestamp="2000-01-01 00:00:00">
<patient>
    <id>1</id>
    <name>xyz</name>
    <sex>male</sex>
    <birthdate>1900-01-01 12:00:00</birthdate>
</patient>
</ecgreport>

XSL:

<?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>
  <h3>CDA Report <xsl:value-of select="ecgreport/@timestamp"/></h3>
    <table border="1">
      <tr bgcolor="#9acdff">
        <th>title</th>
        <th><xsl:text>value</xsl:text></th>
      </tr>
      <tr>
        <td>name</td>
        <td><xsl:value-of select="ecgreport/patient/name"/></td>
      </tr>
      <tr>
        <td>sex</td>
        <td><xsl:value-of select="ecgreport/patient/id"/></td>
      </tr>
      <tr>
        <td>birthdate</td>
        <td><xsl:value-of select="ecgreport/patient/birthdate"/></td>
      </tr>
    </table>
  </body>
  </html>
</xsl:template>

W3School報告以下內容(這是我想要的): w3school結果

威克特給我留下了: 檢票口結果

小票代碼段。 “數據”來自ResultSet,System.out顯示上面發布的xml:

XsltTransformerBehavior xslb = new XsltTransformerBehavior("ecg1.xsl");
xsl = new Label("last_cda",rs.getString("data"));
xsl.setEscapeModelStrings(false);
xsl.add(xslb);
add(xsl);

我在Chrome,Firefox,IE10上進行了嘗試-我猜它們現在都支持XSL。 我想我在轉換步驟中丟失了數據。 我需要輸入一個DOM對象嗎? 還是我又犯了一個錯誤?

謝謝你的幫助

問題出在您的XSL。 查看類XsltTransformerBehavior的幫助頁面:

http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/markup/transformer/XsltTransformerBehavior.html

它說:

容器標記將是應用於轉換的xml數據的根元素,以確保xml數據格式正確(單個根元素)。 另外,將屬性xmlns:wicket =“ http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd添加到根元素,以允許XSL處理器處理wicket名稱空間。

就您而言,我不知道ID為last_cda的容器的標記是什么(您需要檢查標記HTML文件)。 假設它是一個div。 因此,您需要在XSL的XPath中指定它,然后應如下所示:

<?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>
  <h3>CDA Report <xsl:value-of select="div/ecgreport/@timestamp"/></h3>
    <table border="1">
      <tr bgcolor="#9acdff">
        <th>title</th>
        <th><xsl:text>value</xsl:text></th>
      </tr>
      <tr>
        <td>name</td>
        <td><xsl:value-of select="div/ecgreport/patient/name"/></td>
      </tr>
      <tr>
        <td>sex</td>
        <td><xsl:value-of select="div/ecgreport/patient/id"/></td>
      </tr>
      <tr>
        <td>birthdate</td>
        <td><xsl:value-of select="div/ecgreport/patient/birthdate"/></td>
      </tr>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM