2012-04-17 46 views
5

Tôi mới ở XSLT. Tôi muốn tạo một siêu liên kết bằng cách sử dụng XSLT. Nên có dạng như sau:Làm thế nào để tạo siêu kết nối bằng XSLT?

Đọc chính sách bảo mật của chúng tôi.

"chính sách bảo mật" là liên kết và sau khi nhấn này, nên chuyển hướng đến dụ "www.privacy.com"

Bất kỳ ý tưởng? :)

+0

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

+2

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

Trả lời

11

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

Nếu bạn muốn có siêu liên kết trong XSLT, thì bạn cần tạo đầu ra HTML bằng XSLT. Trong HTML bạn có thể tạo một siêu liên kết như thế này

<a href="http://www.yourwebsite.com/" target="_blank">Read our privacy policy.</a> 

Trong này toàn bộ văn bản sẽ trở thành một siêu liên kết trỏ đến www.yourwebsite.com

+0

Cảm ơn! Tôi sẽ thử cái này! – JADE

5

Nếu bạn muốn đọc giá trị siêu liên kết từ một tập tin XML, điều này sẽ làm việc:

Assumption: href là một thuộc tính trên yếu tố cụ thể của XML của bạn.

<xsl:variable name="hyperlink"><xsl:value-of select="@href" /></xsl:variable> 
<a href="{$hyperlink}"> <xsl:value-of select="@href" /></a> 
+2

Biến 'xsl: variable' là không cần thiết. Chỉ cần làm ''. Xem http://www.w3.org/TR/xslt#attribute-value-templates để biết thêm thông tin. –

Các vấn đề liên quan