多个xml文件使用java转换为html文件

时间:2014-03-11 07:54:12

标签: java html xml xslt xslt-1.0

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

我的第一个xml

xml_1.xml(data xml)

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

我的第二个xml是

xml_2.xml(property 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文件的示例代码,

1 个答案:

答案 0 :(得分:1)

使用document()功能在转换期间访问多个文档。为方便起见,下面的解决方案将文档存储在变量中,因为它们被多次使用。

请注意

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

<强>样式表

<?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>