2010-07-06 24 views
5

Với yếu tố:gian Strip hàng đầu chỉ

<comments> comments 
go here 
</comments> 

Làm thế nào tôi có thể dải những gì có thể có nhiều nhân vật không gian hàng đầu. Tôi không thể sử dụng bình thường hóa không gian bởi vì tôi cần phải giữ lại dòng mới và như vậy. XSLT 2.0 ok.

+0

Cảm ơn Thủ trưởng lên. Tôi đoán tôi nên đã đọc các hướng dẫn như tôi đã không nhận thấy nó cho đến khi bài viết cuối cùng của tôi. – johkar

+0

Câu hỏi hay (+1). Xem câu trả lời của tôi cho giải pháp một lớp lót XPath 1.0. :) –

Trả lời

4

Sử dụng replace() chức năng:

replace($input,'^ +','') 

Đó xử lý nhân vật không gian hàng đầu chỉ lên đến phi không gian đầu tiên. Nếu bạn muốn loại bỏ tất cả các nhân vật hàng đầu khoảng trắng (tức là không gian, nl, cr, tab) lên đến phi khoảng trắng đầu tiên, sử dụng:

replace($input,'^\s+','') 
4

Trong XPath 1.0 (có nghĩa là XSLT 1.0, quá):

substring($input, 
      string-length(
         substring-before($input, 
             substring(translate($input, ' ', ''), 
                1, 
                1) 
             ) 
         ) +1 
     ) 

bọc trong một chuyển đổi XSLT:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:variable name="input" 
    select="string(/*/text())"/> 

<xsl:template match="/"> 
    '<xsl:value-of select= 
    "substring($input, 
       string-length(
          substring-before($input, 
          substring(translate($input, ' ', ''), 
             1, 
             1) 
              ) 
          ) +1 
      ) 
    "/>' 
</xsl:template> 
</xsl:stylesheet> 

khi xuyên này hình thành được áp dụng trên các tài liệu XML sau:

<t> XXX YYY Z</t> 

đúng, kết quả muốn được sản xuất:

'XXX YYY Z' 
Các vấn đề liên quan