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

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