1. Home
  2. Java XML Tutorial
  3. Các Ví Dụ Về XML Và XSLT Của Java DOM Parser
Avatar of Nguyễn Tuấn Nguyễn Tuấn 5 năm trước

Các Ví Dụ Về XML Và XSLT Của Java DOM Parser

Với XSLT (Chuyển đổi ngôn ngữ biểu định kiểu có thể mở rộng), chúng ta có thể chuyển đổi tài liệu XML sang các định dạng khác như HTML.

P/S: đã được kiểm tra với Java 11

DOM Parser and Transformer

Chúng ta có thể sử dụng TransformerFactory để áp dụng XSLT tệp để chuyển đổi tệp XML sang định dạng khác.

 TransformerFactory transformerFactory = TransformerFactory.newInstance();

  // add XSLT in Transformer
  Transformer transformer = transformerFactory.newTransformer(
          new StreamSource(new File("format.xslt")));

  transformer.transform(new DOMSource(doc), new StreamResult(output));

Ví dụ về DOM: Định dạng XML + XSLT = HTML

Dưới đây là ví dụ về trình phân tích cú pháp Java DOM để phân tích cú pháp tệp XML, áp dụng tệp XSLT và chuyển đổi tệp XML thành tệp HTML.

Một file XML:

<?xml version="1.0" encoding="utf-8"?>
<company>
    <staff id="1001">
        <name>mkyong</name>
        <role>support</role>
    </staff>
    <staff id="1002">
        <name>yflow</name>
        <role>admin</role>
    </staff>
</company>

Áp dụng tệp XSLT bên dưới sẽ chuyển tệp XML thành định dạng HTML.

<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <body style="font-size:12pt;background-color:#EEEEEE">
        <h1 style="font-size:20pt;color:#FF0000">Hello World DOM + XML + XSLT</h1>
        <xsl:for-each select="company/staff">
            <ul>
                <li>
                    <xsl:value-of select="@id"/> -
                    <xsl:value-of select="name"/> -
                    <xsl:value-of select="role"/>
                </li>
            </ul>
        </xsl:for-each>
    </body>
</html>

 Đầu ra là một tệp HTML.

<html>
  <body style="font-size:12pt;background-color:#EEEEEE">
      <h1 style="font-size:20pt;color:#FF0000">Hello World DOM + XML + XSLT</h1>
      <ul>
          <li>1001 -
                  mkyong -
                  support</li>
      </ul>
      <ul>
          <li>1002 -
                  yflow -
                  admin</li>
      </ul>
  </body>
</html>

Dưới đây là trình phân tích cú pháp Java DOM để thực hiện chuyển đổi XSLT.

package com.mkyong.xml.dom;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.*;

// XML -> XSLT -> Other formats
public class XsltXmlToHtmlDomParser{

    private static final String XML_FILENAME
                          = "src/main/resources/staff-simple.xml";
    private static final String XSLT_FILENAME
                          = "src/main/resources/xslt/staff-xml-html.xslt";

    public static void main(String[] args) {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        try (InputStream is = new FileInputStream(XML_FILENAME)) {

            DocumentBuilder db = dbf.newDocumentBuilder();

            Document doc = db.parse(is);

            // transform xml to html via a xslt file
            try (FileOutputStream output =
                         new FileOutputStream("c:\\test\\staff.html")) {
                transform(doc, output);
            }

        } catch (IOException | ParserConfigurationException |
            SAXException | TransformerException e) {
            e.printStackTrace();
        }

    }

    private static void transform(Document doc, OutputStream output)
            throws TransformerException {

        TransformerFactory transformerFactory = TransformerFactory.newInstance();

        // add XSLT in Transformer
        Transformer transformer = transformerFactory.newTransformer(
                new StreamSource(new File(XSLT_FILENAME)));

        transformer.transform(new DOMSource(doc), new StreamResult(output));

    }

}

Đầu ra –c:\\test\\staff.html

XML parser Java, Java DOM Parser, Tạo file XML trong Java
XML và XSLT Trong Java DOM Parser

Cảm ơn các bạn đã ghé thăm. Chúc các bạn thành công!

48 lượt xem