Создание XML на основе HTML с использованием XSLT в Java - PullRequest
2 голосов
/ 20 февраля 2012

Пожалуйста, помогите мне, я делаю проект преобразования файлов, который конвертирует XML в HTML, используя XSL в Java, а также мне нужно конвертировать HTML в XML, используя XSL. мой первый процесс закончился. но я построил во второй части преобразования .. Есть ли возможность сделать это преобразование. Я скажу вам точный поток первого процесса ...

Это мой пример 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>

Это мой пример xsl-файла:

testme.xsl

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" 
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="mainpara">
    <html>
    <body>
      <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>     

  <xsl:template match="epigraph">
    <div>
      <xsl:apply-templates/>
    </div>
  </xsl:template>

  <xsl:template match="para">
    <p>
      <xsl:apply-templates/>
    </p>
  </xsl:template>

  <xsl:template match="blockquote">
    <b>
      <xsl:apply-templates/>
    </b>
  </xsl:template>  
</xsl:stylesheet>

Это мой пример файла Java:

Main.java

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-файл:

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

Теперь я отредактирую этот html-файл после того, как отредактировал этот html-файл. Мне нужно снова преобразовать его в xml-файл или xhtml-файл, для которого мне нужен обратный процесс. Я думаю, что это возможно только путем изменения xsl. Можно ли создать xsl на основе этого html. Если я создал этот xsl-файл, то я передаю этот xsl-файл в вышеуказанную java-программу (я прокомментировал эту строку в основной java-программе). Поэтому мне нужно создать этот xsl-файл.

Пожалуйста, помогите мне .. Мне нужна ваша помощь ..

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Димитр, как всегда, корректен, но позвольте мне объяснить немного подробнее.

Здесь есть как минимум две проблемы.

Во-первых, у вас есть текст, такой как <emphasis role="italic">trained</emphasis> в вашем вводеXML, который не получает вывод в ваш HTML.Так что нет абсолютно никакого способа, чтобы любой инструмент или даже человек мог полностью изменить преобразование и угадать, какой XML использовался для генерации HTML.Это то, что Димитр подразумевает под «Ваше преобразование не без потерь»

Но давайте предположим, что вы изменили свой XSLT, который превратил XML в HTML, так что по-человечески можно было понять, что такое оригинальный XML, взглянув наHTML ...

Во-вторых, XLS для преобразования HTML обратно в XML будет полностью отличаться от XSL, который превратил XML в HTML.

Кодировали ли вы показанный XSLTв своем вопросе сами?Если нет, то первое, что вам нужно сделать, это попытаться понять этот код.Вы никогда не найдете решения своей проблемы, если даже не сможете это понять.

0 голосов
/ 20 февраля 2012

Обратное преобразование не может быть сделано .

Ваша трансформация не без потерь . Помимо прочего, вы потеряли информацию emphasis - она ​​не отражается в выводе HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...