[英]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報告以下內容(這是我想要的):
威克特給我留下了:
小票代碼段。 “數據”來自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的幫助頁面:
它說:
容器標記將是應用於轉換的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.