Java xslt transform打印整个xml文件还是不打印,而不是转换它?

Java xslt transform打印整个xml文件还是不打印,而不是转换它?,java,xml,xslt,Java,Xml,Xslt,我正在尝试将带有xsl样式表的xml文件转换为html 这是java TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(new StreamSource(classLoader.getResourceAsStream("driving.xsl"))); StreamResu

我正在尝试将带有xsl样式表的xml文件转换为html

这是java

TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer(new StreamSource(classLoader.getResourceAsStream("driving.xsl")));
            StreamResult drivingHtml = new StreamResult(new StringWriter());
            transformer.transform(new StreamSource(classLoader.getResourceAsStream("driving.xml")), drivingHtml);
            System.out.println(drivingHtml.getWriter().toString());
以下是一些xml:

<?xml version="1.0" encoding="UTF-8"?>
<user xmlns="http://notreal.org/ns1" xmlns:poi="http://notreal2.org/ns2">
    <address type="primary">
        <street>1031 Court St.</street>
        <city>Monhegan, NY</city>
    </address>

    <address type="secondary">
        <street> Elm St.</street>
    </address>

法院街1031号。
纽约州蒙赫根
埃尔姆街。
这是xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <head>
            <title>User</title>
            </head>
             <body>
                <p>Detailed Addresses</p>
                <xsl:apply-templates select="/user/address"/>
             </body>
         </html>
    </xsl:template>

     <xsl:template match="address">
        <table>
            <th>Primary</th>
            <th>Secondary</th>
            <tr>
                          <td>
                    <xsl:value-of select="address" />
                           </td>
                 </tr>
            </table>
     </xsl:template>
</xsl:stylesheet>

使用者
详细地址

主要的,重要的 次要的

当我运行它时,我从根模板匹配中获取html,但从模板匹配地址中没有获取任何内容。我尝试过其他模板的变体,我没有得到至少基本的html,而是将xml文件的全部内容输出。

看起来像是名称空间问题。源中的
address
元素具有名称空间
http://notreal.org/ns1
,但XSLT根本不引用该名称空间


尝试包含
xmlns=”http://notreal.org/ns1“
在xslt中。

检查名称空间或将XML修改为类似以下内容以添加名称空间前缀:

<?xml version="1.0" encoding="UTF-8"?>
<user xmlns:a="http://notreal.org/ns1" xmlns:poi="http://notreal2.org/ns2">
  <address type="primary">
      <street>1031 Court St.</street>
      <city>Monhegan, NY</city>
  </address>

  <address type="secondary">
      <street> Elm St.</street>
  </address>
</user>

法院街1031号。
纽约州蒙赫根
埃尔姆街。

我在标签中添加了xmlns=”“xmlns:poi=“”,结果相同:(好的,我想这是一条正确的道路,我刚刚从xml文件和xsl中删除了名称空间,现在至少xsl转换可以工作了。但是,还有其他想法如何使其与名称空间一起工作吗?名称空间问题总是让我头疼。您可以在xslt中为名称空间指定前缀,并在引用时使用该前缀。)例如
xmlns:ns1=”http://notreal.org/ns1“
在您的
元素上,并执行
。不过,老实说,我本以为将其添加为默认名称空间应该有效,所以我也不确定这是否有效。哦,成功了!是的!为什么将名称空间声明为xmlns=”“不起作用,而声明为xmlns:a=“”突然让它起作用了?有什么链接可以阅读吗?