Một cách để làm điều đó sẽ là:
<xsl:variable name="apos" select='"'"'/>
<!-- ... later ... -->
<xsl:for-each select="country[nation=concat('India', $apos, 's')]">
Vấn đề ở đây là gồm hai phần:
- XSLT xác định không có cách nào để thoát ký tự trong chuỗi. Vì vậy,
'India\'s'
không phải là một tùy chọn.
- Bạn phải trải qua hai lớp đánh giá riêng biệt.
Đó là:
- XML tốt formedness: Các tài liệu XML chương trình XSLT của bạn bao gồm phải được well-formed. Bạn không thể vi phạm các quy tắc XML.
- Phân tích biểu thức XSLT: Chuỗi giá trị thuộc tính kết quả (sau khi phân tích cú pháp DOM XML được thực hiện) phải phù hợp với công cụ XSLT.
Constructs thích:
<xsl:for-each select="country[nation='India's']">
<xsl:for-each select="country[nation='India's']">
vượt qua lớp XML mà vi phạm các lớp XSLT, bởi vì trong cả hai trường hợp giá trị thuộc tính hiệu quả (như lưu trữ trong DOM) là country[nation='India's']
, mà rõ ràng là một cú pháp XPath lỗi.
Constructs thích:
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
<xsl:for-each select="country[nation=concat("India", "'", "s")]">
vi phạm rõ ràng các lớp XML. Nhưng chúng sẽ không vi phạm lớp XSLT (!), Vì giá trị thực tế của chúng (nếu tài liệu XSLT có thể được phân tích cú pháp ở vị trí đầu tiên) sẽ xuất hiện dưới dạng country[nation=concat('India', "'", 's')]
, hoàn toàn hợp pháp như biểu thức XPath.
Vì vậy, bạn phải tìm cách vượt qua cả lớp 1 và lớp 2. Một cách là cách biến như được hiển thị ở trên. Một cách khác là:
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
xuất hiện XSLT là country[nation=concat('India', "'", 's')]
.
Cá nhân, tôi thấy "cách biến" dễ làm việc hơn.
@Nanda: Bạn đã hỏi một loạt câu hỏi rồi và đã nhận được câu trả lời cho tất cả, nhưng không bỏ phiếu hoặc chấp nhận bất kỳ câu trả lời nào. Vui lòng kiểm tra xem bạn có thể chấp nhận một số câu trả lời bạn đã nhận được từ trước tới giờ không. Nó trả lại cho những người đã đầu tư thời gian của họ vào các vấn đề của bạn. – Tomalak
@Nanda: Nó cũng giúp người dùng trong tương lai tìm kiếm một vấn đề tương tự và gặp phải câu hỏi này - nó cho họ biết rằng một câu trả lời cụ thể đã làm việc cho bạn. –