在java中使用xslt创建基于html的xml

在java中使用xslt创建基于html的xml,java,xml,xslt,xhtml,Java,Xml,Xslt,Xhtml,请帮助我,我正在做一个文件转换项目,该项目使用java中的xsl将xml转换为html,我还需要使用xsl将html转换为xml。我的第一个过程结束了,但我在转换的第二部分进行了构建。。是否有可能进行转换。我将告诉您第一个流程的确切流程 这是我的示例xml文件: tabl.xml: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xml" href="testxsl.xsl"?> <

请帮助我,我正在做一个文件转换项目,该项目使用java中的xsl将xml转换为html,我还需要使用xsl将html转换为xml。我的第一个过程结束了,但我在转换的第二部分进行了构建。。是否有可能进行转换。我将告诉您第一个流程的确切流程

这是我的示例xml文件: tabl.xml:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xml" href="testxsl.xsl"?>
<mainpara>
<epigraph>
<para>Though successful research demands a deep
<emphasis role="italic">trained</emphasis> 
<emphasis role="italic">taught</emphasis> to regard.
</para>
<para>Kuhn (1976, p. 66)</para>
</epigraph>
<blockquote role="extract">
<para>Though successful research demands a deep commitment to the status quo.
<emphasis role="italic">trained</emphasis>
<emphasis role="italic">taught</emphasis> 
</para>
</blockquote>
</mainpara>
这是我生成的html文件:

<html>
   <body>
      <div>

         <p>Though successful research demands a deep commitment to the status quo, innovation
         </p>

         <p>Kuhn (1976, p. 66)</p>

      </div>
      <b>

         <p>Though successful research demands a deep commitment to the status quo
         </p>
         </b>

   </body>
</html>

尽管成功的研究需要对现状的深刻承诺,但创新

库恩(1976年,第66页)

尽管成功的研究需要对现状的深刻承诺

现在我将编辑这个html文件,在编辑完这个html文件后,我需要再次将其转换为xml文件或xhtml文件,这是我需要的反向过程。我认为只有修改xsl才有可能。是否可以基于该html创建xsl。如果我创建了该xsl文件,那么我会在上面的java程序中传递该xsl文件(我在主java程序中注释了该行)。因此,我必须创建该xsl文件

请帮帮我。。我需要你的帮助


提前感谢

无法进行反向转换


您的转换不是无损的。除此之外,您已经丢失了
强调信息
信息,它没有反映在HTML输出中。

无法进行反向转换


您的转换不是无损的。除此之外,您还丢失了
强调
信息——它没有反映在HTML输出中。

Dimitre一如既往地正确,但让我再解释一下

这里至少有两个问题

首先,在输入XML中有像
这样经过训练的
文本,这些文本不会输出到HTML中。因此,任何工具或个人都绝对不可能逆转转换并猜测使用了什么XML来生成HTML。这就是Dimitre所说的“您的转换不是无损的”

但是我们假设您更改了XSLT,将XML转换为HTML,这样就可以通过查看HTML来计算出原始XML是什么

其次,将HTML转换回XML的XLS将与将XML转换成HTML的XSL完全不同


您是否自己编写了问题中显示的XSLT?如果没有,那么您需要做的第一件事就是尝试并理解代码。如果你连这么多的理解都不懂,你就永远不会找到解决问题的办法。

迪米特尔一如既往地是正确的,但让我再解释一下

这里至少有两个问题

首先,在输入XML中有像
这样经过训练的
文本,这些文本不会输出到HTML中。因此,任何工具或个人都绝对不可能逆转转换并猜测使用了什么XML来生成HTML。这就是Dimitre所说的“您的转换不是无损的”

但是我们假设您更改了XSLT,将XML转换为HTML,这样就可以通过查看HTML来计算出原始XML是什么

其次,将HTML转换回XML的XLS将与将XML转换成HTML的XSL完全不同

您是否自己编写了问题中显示的XSLT?如果没有,那么您需要做的第一件事就是尝试并理解代码。如果你连这么多都不懂的话,你永远也找不到解决问题的办法

import java.io.File;
import java.io.InputStream;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class Main {  


    public static void simpleTransform(String sourcePath, String xsltPath,  
                                       String resultDir) {

        TransformerFactory tFactory = TransformerFactory.newInstance();  
        try {  
            Transformer transformer =  
                tFactory.newTransformer(new StreamSource(new File(xsltPath)));  

            transformer.transform(new StreamSource(new File(sourcePath)),  
                                  new StreamResult(new File(resultDir)));  

        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

    public static void main(String[] args) {  


        System.setProperty("javax.xml.transform.TransformerFactory",
                "net.sf.saxon.TransformerFactoryImpl");

      simpleTransform("E:/bh/tabl.xml","E:/bh/testme.xsl", "E:/bh/me.html");
      //simpleTransform("E:/bh/me.html","E:/bh/11111.xsl","E:/bh/tab.xml" ); //This is i need

    }  
}  
<html>
   <body>
      <div>

         <p>Though successful research demands a deep commitment to the status quo, innovation
         </p>

         <p>Kuhn (1976, p. 66)</p>

      </div>
      <b>

         <p>Though successful research demands a deep commitment to the status quo
         </p>
         </b>

   </body>
</html>