XSLT模板匹配不起作用

时间:2012-08-03 08:48:22

标签: xml xslt

我在MySQL数据库中有一个表格的XML文件,我使用WebRowSet创建。

XML看起来像这样:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="Status.xslt" ?>
<webRowSet xmlns="http://java.sun.com/xml/ns/jdbc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/jdbc http://java.sun.com/xml/ns/jdbc/webrowset.xsd">
  <properties>
     ....
  </properties>
  <metadata>
     ....
  </metadata>
  <data>
    <currentRow>
      <columnValue>...</columnValue>
    </currentRow>
    ...
  </data>
</webRowSet>

(这是架构:http://java.sun.com/xml/ns/jdbc/webrowset.xsd

我的目标是使用XSLT使XML更具可读性,这是我到目前为止所拥有的:

<?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><head></head><body>

        <xsl:apply-templates />

    </body></html>
</xsl:template>

<xsl:template match="columnValue">
    <p style="color:red">
        <xsl:value-of select="." />
    </p>
</xsl:template>

</xsl:stylesheet>

当我在Firefox中打开.XML时,它只打印所有值 - 我希望columnValues为红色。当我将TEST放入columnValue模板时,它不会显示..

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

在源XML中,columnValue位于命名空间中:http://java.sun.com/xml/ns/jdbc

您尚未在XSLT中声明此命名空间。试试这个:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:j="http://java.sun.com/xml/ns/jdbc">

...

<xsl:template match="j:columnValue">
....