chuyển đổi này:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<html>
<a href="www.privacy.com">Read our <b>privacy policy.</b></a>
</html>
</xsl:template>
</xsl:stylesheet>
khi được áp dụng trên bất kỳ tài liệu XML nào (không được sử dụng), tạo ra kết quả mong muốn:
<html><a href="www.privacy.com">Read our <b>privacy policy.</b></a></html>
và điều này sẽ được hiển thị bởi trình duyệt như:
đã đọc chính sách sự riêng tư của chúng tôi.
Bây giờ tưởng tượng rằng không có gì là hardcoded trong kiểu XSLT - thay vì các dữ liệu trong các tài liệu XML nguồn:
<link url="www.privacy.com">
Read our <b>privacy policy.</b>
</link>
Sau đó, chuyển đổi này:
<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:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="link">
<a href="{@url}"><xsl:apply-templates/></a>
</xsl:template>
</xsl:stylesheet>
khi được áp dụng trên tài liệu XML ở trên, tạo ra kết quả mong muốn, chính xác:
<a href="www.privacy.com">
Read our <b>privacy policy.</b>
</a>
Nguồn
2012-04-17 04:02:44
XSLT không thực hiện siêu liên kết. Suy nghĩ lại câu hỏi của bạn. –
Khi suy nghĩ về cách đạt được điều gì đó như thế này trong XSLT, hãy chia nhiệm vụ thành hai: (a) quyết định HTML bạn muốn tạo, và (b) quyết định mã XSLT nào bạn cần để tạo ra nó. Cách bạn phrased câu hỏi cho thấy rằng bạn đã không nắm được sự tách biệt này của mối quan tâm. –