Làm cách nào để nối một chuỗi thành xsl: value-of select = "…?


92
<a>
    <xsl:attribute name="href"> 
     <xsl:value-of select="/*/properties/property[@name='report']/@value" />
    </xsl:attribute>
</a>    

Có cách nào để hủy chuỗi khác tới

<xsl:value-of select="/*/properties/property[@name='report']/@value"  />

Tôi cần chuyển một số văn bản sang thuộc tính href ngoài giá trị thuộc tính báo cáo

Câu trả lời:


148

Bạn có thể sử dụng hàm xpath được đặt tên khá hợp lý được gọi là concat tại đây

<a>
   <xsl:attribute name="href">
      <xsl:value-of select="concat('myText:', /*/properties/property[@name='report']/@value)" />
   </xsl:attribute>
</a>  

Tất nhiên, nó không nhất thiết phải là văn bản ở đây, nó có thể là một biểu thức xpath khác để chọn một phần tử hoặc thuộc tính. Và bạn có thể có bất kỳ số đối số nào trong biểu thức concat.

Xin lưu ý, bạn có thể sử dụng Mẫu giá trị thuộc tính (được biểu thị bằng dấu ngoặc nhọn) tại đây để đơn giản hóa biểu thức của bạn

<a href="{concat('myText:', /*/properties/property[@name='report']/@value)}"></a>

2
@TimC: Tốt, nhưng concat()chức năng này không cần thiết ở đây.
Dimitre Novatchev

Tôi có thẻ sau: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>và tôi muốn tạo một trường ẩn trong XSLT chỉ lấy ID #. Làm thế nào tôi có thể đạt được điều đó?
SearchForKnowledge

27

Ba câu trả lời:

Đơn giản :

<img>
    <xsl:attribute name="src">
        <xsl:value-of select="//your/xquery/path"/>
        <xsl:value-of select="'vmLogo.gif'"/>
    </xsl:attribute>
</img>

Sử dụng 'concat':

<img>
    <xsl:attribute name="src">
        <xsl:value-of select="concat(//your/xquery/path,'vmLogo.gif')"/>                    
    </xsl:attribute>
</img>

Phím tắt thuộc tính do @TimC đề xuất

<img src="{concat(//your/xquery/path,'vmLogo.gif')}" />

2
Theo lưu ý của Dimitre, bạn không cần concat ở đây:<img src="{//your/xpath}vmLogo.gif" />
Svish


5

Cách dễ nhất để nối chuỗi văn bản tĩnh với một giá trị đã chọn là sử dụng thành phần.

<a>
  <xsl:attribute name="href"> 
    <xsl:value-of select="/*/properties/property[@name='report']/@value" />
    <xsl:text>staticIconExample.png</xsl:text>
  </xsl:attribute>
</a>

1

Phương pháp dễ nhất là

  <TD>
    <xsl:value-of select="concat(//author/first-name,' ',//author/last-name)"/>
  </TD>

khi Cấu trúc XML là

<title>The Confidence Man</title>
<author>
  <first-name>Herman</first-name>
  <last-name>Melville</last-name>
</author>
<price>11.99</price>

0

Không phải là giải pháp dễ đọc nhất, nhưng bạn có thể trộn kết quả từ giá trị của với văn bản thuần túy:

<a>
  <xsl:attribute name="href"> 
    Text<xsl:value-of select="/*/properties/property[@name='report']/@value"/>Text
  </xsl:attribute>
</a>

1
Điều này có một số vấn đề: giữa các lệnh XSLT, các nút văn bản chỉ có khoảng trắng bị bỏ qua; nhưng bây giờ bạn có một nút văn bản không phải khoảng trắng ( ' Text'), khoảng trắng (thậm chí dòng mới) sẽ được xuất ra.
Alejandro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.