2012-08-22 34 views

Trả lời

30
<xsl:template match="node()"> 

là viết tắt cho:

<xsl:template match="child::node()"> 

này phù hợp với bất kỳ loại nút có thể được lựa chọn thông qua the child:: trục:

  • yếu tố

  • text-nút

  • xử lý-hướng dẫn (PI) nút

  • comment nút.

Ở phía bên kia:

<xsl:template match="*"> 

là viết tắt cho:

<xsl:template match="child::*"> 

này phù hợp với bất kỳ yếu tố.

Biểu thức XPath: someAxis :: * khớp với bất kỳ nút nào của loại nút chính cho trục đã cho.

Đối với trục child::, loại nút chính là phần tử.

12

Chỉ để minh họa cho một trong những sự khác biệt, tức là * không phù hợp text:

Với xml:

<A> 
    Text1 
    <B/> 
    Text2 
</A> 

Matching trên node()

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 

    <!--Suppress unmatched text--> 
    <xsl:template match="text()" /> 

    <xsl:template match="/"> 
     <root> 
      <xsl:apply-templates /> 
     </root> 
    </xsl:template> 

    <xsl:template match="node()"> 
     <node> 
      <xsl:copy /> 
     </node> 
     <xsl:apply-templates /> 
    </xsl:template> 
</xsl:stylesheet> 

Cung cấp:

<root> 
    <node> 
     <A /> 
    </node> 
    <node> 
     Text1 
    </node> 
    <node> 
     <B /> 
    </node> 
    <node> 
     Text2 
    </node> 
</root> 

Trong khi phù hợp trên *:

<xsl:template match="*"> 
    <star> 
     <xsl:copy /> 
    </star> 
    <xsl:apply-templates /> 
</xsl:template> 

Không phù hợp các nút văn bản.

<root> 
    <star> 
    <A /> 
    </star> 
    <star> 
    <B /> 
    </star> 
</root> 
+1

Cũng không khớp '*' nút nhận xét phù hợp, nút lệnh xử lý, nút thuộc tính, nút không gian tên và các nút tài liệu ... Mẫu hoặc biểu thức '*' (riêng của nó, như là abbr.cho 'child :: *') ** chỉ bao giờ khớp các nút phần tử và các nút phần tử chỉ **. Khi sử dụng '@ *', viết tắt của 'attribute :: *', dấu hoa thị khớp với các nút thuộc tính _only_ trên trục thuộc tính. – Abel

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