【问题标题】:Multiple xml files transform using java to html file多个xml文件使用java转换为html文件
【发布时间】:2014-03-11 07:54:12
【问题描述】:

我的问题很简单 我有两个 xml 文件和一个使用 java Transformer 的 xsl 文件,我需要创建 html 字符串缓冲区。我知道如何处理单个 xml 文件我需要帮助才能使用两个 xml。

我的第一个xml

xml_1.xml(数据xml)

<data>  
      <title>Mr</title>
      <name>Peter</name>
</data>

我的第二个 xml 是

xml_2.xml(属性 xml)

<prop>
       <lblname>Name</lblname>
       <lbltitle>Title</lbltitle>
</prop>

我的 xsl 是

dispaly.xsl

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE xsl:stylesheet [<!ENTITY nbsp "&#xa0;"><!ENTITY bull "&#x2022;">]>
 <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <table width="100%" border="0" cellspacing="0" cellpadding="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
        <tr>
            <td colspan="2"><xsl:value-of select="prop/lbltitle" /></td>
            <td width="1"><xsl:value-of select="prop/lblname" /></td>
        </tr>
        <tr>
            <td colspan="2"><xsl:value-of select="data/title" /></td>
            <td width="1"><xsl:value-of select="data/namee" /></td>
        </tr>
      </table>
</xsl:template>

我需要的是使用 java make 将其转换为 html 文件,这是我用于单个 xml 文件的示例代码,

Java 示例代码

TransformerFactory tFactory = TransformerFactory.newInstance();
            StreamSource stylesource = new StreamSource(stylesheet);
            Transformer transformer = tFactory.newTransformer(stylesource);

            DOMSource source = new DOMSource(document);

            Writer outWriter = new StringWriter();
            StreamResult result = new StreamResult(outWriter);
            transformer.transform(source, result);

我需要使用 java make 将其转换为 html 文件,这是我用于单个 xml 文件的示例代码,

【问题讨论】:

    标签: java html xml xslt xslt-1.0


    【解决方案1】:

    在转换过程中使用document() 函数访问多个文档。为方便起见,以下解决方案将文档存储在变量中,因为它们被多次使用。

    注意

    • 由于您显然是在生成 HTML,您应该将 output 方法设置为“html”
    • 您的样式表中有错字,XML 输入中不存在名为 namee 的元素
    • 生成的表格不符合完整的 HTML 文档。如果您打算这样使用它,您应该知道这一点
    • 您的某些td 元素的colspan 属性没有意义。仅当在另一行中有 更多 个可以跨越的表格单元格时,它才有用

    样式表

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE xsl:stylesheet [<!ENTITY nbsp "&#xa0;"><!ENTITY bull "&#x2022;">]>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
       <xsl:output method="html" indent="yes"/>
    
       <xsl:variable name="data" select="document('data.xml')"/>
       <xsl:variable name="property" select="document('property.xml')"/>
    
       <xsl:template match="/">
           <table width="100%" border="0" cellspacing="0" cellpadding="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
               <tr>
                   <td colspan="2"><xsl:value-of select="$property/prop/lbltitle" /></td>
                   <td width="1"><xsl:value-of select="$property/prop/lblname" /></td>
               </tr>
               <tr>
                   <td colspan="2"><xsl:value-of select="$data/data/title" /></td>
                   <td width="1"><xsl:value-of select="$data/data/name" /></td>
               </tr>
             </table>
       </xsl:template>
    
    </xsl:stylesheet>
    

    输出

    <table width="100%" border="0" cellspacing="0" cellpadding="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
       <tr>
          <td colspan="2">Title</td>
          <td width="1">Name</td>
       </tr>
       <tr>
          <td colspan="2">Mr</td>
          <td width="1">Peter</td>
       </tr>
    </table>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2016-07-21
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多