giải pháp XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pNewIpAddress" select="'192.68.0.1'"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ipAddress/text()">
<xsl:value-of select="$pNewIpAddress"/>
</xsl:template>
</xsl:stylesheet>
Khi chuyển đổi này được áp dụng trên bất kỳ tài liệu, tất cả các nút của tài liệu được sao chép "như nó vốn có" trừ con nút văn bản của bất kỳ phần tử ipAddress
(bất kể phần tử này nằm trong tài liệu). Cái sau được thay thế bằng giá trị của một tham số được cung cấp bên ngoài, có tên là $pNewIpAddress
.
Ví dụ, nếu việc chuyển đổi được áp dụng đối với tài liệu này XML:
<t>
<a>
<b>
<ipAddress>127.0.0.1</ipAddress>
</b>
<c/>
</a>
<d/>
</t>
các truy nã, kết quả chính xác được sản xuất:
<t>
<a>
<b>
<ipAddress>192.68.0.1</ipAddress>
</b>
<c/>
</a>
<d/>
</t>
Có rất nhiều dựa trên nền Java XSLT bộ vi xử lý và vị trí thích hợp để hiểu cách chúng có thể được gọi từ Java là tài liệu của chúng. Một trong những bộ xử lý XSLT như vậy tốt nhất là Saxon và tài liệu của nó có thể được tìm thấy tại địa chỉ:
http://www.saxonica.com/documentation/documentation.xml
Nguồn
2011-01-13 00:08:36
Tốt câu hỏi, 1. Xem câu trả lời của tôi cho một giải pháp XSLT hoàn chỉnh và một liên kết đến tài liệu của một trong những bộ xử lý XSLT dựa trên Java tốt nhất. –
Bạn có ý nghĩa gì bởi "tốt nhất"? Thuận tiện nhất (đơn giản nhất), hiệu suất nhất, có thể sử dụng cho các tệp lớn? XSLT và các mô hình cây (DOM) có thể thuận tiện, nhưng cũng sử dụng rất nhiều bộ nhớ và tương đối chậm (ví dụ). – StaxMan
Saxon là khá tốt nhất. Nó có mô hình bộ nhớ trong DOM nhỏ hơn, hỗ trợ phát trực tuyến các tệp lớn, có trình tối ưu hóa đặc biệt và hỗ trợ XSLT 1, XSLT 2, XQuery, XML Schema và hỗ trợ một số tiêu chuẩn dự thảo mới hơn. – lavinio