2010-05-27 29 views
9

Tôi đã có <a> thẻ sau:XSL - Làm thế nào để vô hiệu hóa thoát đầu ra cho một thuộc tính?

<a href="http://myserver/_forms?url={@FileRef}&amp;id=5">...</a> 

Một trong các tập tin được gọi là "File's got apostrophe.xml". Đầu ra của XSL là:

<a href="http://myserver/_forms?url=/blah/File&amp;#39;s got apostrophe.xml&id=5">...</a> 

Vấn đề là các dấu nháy đơn là HTML-thoát (hai lần?) Vào &amp;#39;, mà phá vỡ liên kết.

Tôi cũng đã cố gắng sử dụng <xsl:attribute>, với kết quả tương tự:

<a> 
    <xsl:attribute name="href"> 
    <xsl:value-of select="concat('http://myserver/_forms?url=', @FileRef, '&amp;id=5')" 
     disable-output-escaping="yes" /> 
    </xsl:attribute> 
</a> 

Xuất ra <xsl:value-of select="@FileRef" disable-output-escaping="yes" /> hoạt động tốt - giá trị unescaped được in trên trang.

Làm cách nào để đặt thuộc tính mà không thoát chuỗi?

+0

bạn đã thử lưu chuỗi vào biến và xuất ra? –

+0

bạn đã thử các trình xử lý/trình duyệt xslt khác nhau chưa? – user306708

+0

@Gaby - Tôi đã không thử điều đó, tôi nghĩ về nó, nhưng nó không có ý nghĩa. Nó không có vẻ tốt hơn là xuất ra trường '@ FileRef'. Bạn đang đề cập đến toàn bộ thẻ '', tương tự như câu trả lời của tpeczek? – Kobi

Trả lời

17

Bạn có thể tạo bạn < một > dưới dạng văn bản:

<xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text> 
<xsl:value-of select="concat('http://myserver/_forms?url=', @FileRef, '&amp;id=5')" disable-output-escaping="yes" /> 
<xsl:text disable-output-escaping="yes">" &gt;/a&lt;</xsl:text> 
+0

Đó là một ý tưởng khá hay, có vẻ như điều này sẽ hoạt động. Tôi sẽ kiểm tra vào chủ nhật khi tôi trở lại làm việc. Cảm ơn! – Kobi

+4

Điều đó có hiệu quả, mặc dù kết quả đặc biệt xấu xí. Thật đáng tiếc cho nhà phát triển tiếp theo đó. Cảm ơn! – Kobi

5

Tôi biết tôi là một hơi muộn về vấn đề này, nhưng tôi nghĩ rằng thẻ thuộc tính là cách để, bạn chỉ không muốn concat ...

<a> 
    <xsl:attribute name="href"> 
    http://myserver/_forms?url=<xsl:value-of select="@FileRef" disable-output-escaping="yes" />&amp;id=5 
    </xsl:attribute> 
</a> 
+0

Ý tưởng thú vị. Tôi sẽ nhìn vào đó, cảm ơn. – Kobi

+0

Làm việc tuyệt vời với bộ xử lý XSLT của PHP, cảm ơn! –

+0

Tôi gặp sự cố này: http://stackoverflow.com/questions/7887016/disable-output-escaping-not-working-for-attribute-in-xlst – Peter

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