2011-05-18 26 views
5

Tôi vừa bắt đầu học XSL (T) và tôi tự hỏi làm thế nào apply-templates hoạt động? Tôi không hiểu phần đệ quy áp dụng một phần của nó như nó được viết trong cuốn sách của tôi.Các mẫu áp dụng hoạt động như thế nào?

Tôi hiểu XPath phần của XSL (T) và vân vân nhưng không phải những gì apply-templates đang làm và lý do tại sao tôi viết nó nhiều lần.

Trả lời

3

Nếu bạn đã đọc về áp dụng mẫu trong một cuốn sách nhưng chưa hiểu, thì rõ ràng là một vài từ ở đây sẽ hữu ích. Có lẽ bạn cần một cuốn sách khác: phong cách hướng dẫn khác nhau hấp dẫn với những người khác nhau. Hoặc có lẽ một hướng dẫn trực tuyến chẳng hạn như http://vimeo.com/15234803 sẽ nhận được các ý tưởng trên.

Bản chất của cơ chế mẫu là có hai bên liên quan. Lệnh xsl: apply-templates chọn một số nút để xử lý và các quy tắc mẫu (giữa chúng) quyết định xử lý đó là gì. Điều này cho phép khớp nối rất lỏng lẻo và tách biệt mối quan tâm lớn; nó khá giống với thông điệp hướng đối tượng/phương thức, nhưng linh hoạt hơn nhiều.

+0

Vui lòng đăng liên kết video hướng dẫn bằng XSLT nào đó.Bcoz các hướng dẫn ở trên cung cấp ý tưởng rõ ràng về áp dụng mẫu và tôi cũng cần biết mục đích sử dụng chế độ = 'parent' ... –

+0

Để tôi giới thiệu sách của mình: Các lập trình viên XSLT 2.0 Tham khảo từ Wrox Press. Một khi bạn đang vào những thứ như chế độ được đặt tên, bạn cần một cuốn sách tham khảo phong nha. –

8

Bạn sử dụng <xsl:apply-templates> để gọi số <xsl:template>: bạn đã xác định.

<xsl:apply-templates> gọi mẫu phù hợp cho mỗi nút trong tập hợp.

Bạn có thể kiểm soát thứ tự xử lý bằng cách chỉ định thuộc tính select trên apply-templates.

Xem ví dụ này từ w3schools:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>My CD Collection</h2> 
    <xsl:apply-templates/> 
    </body> 
    </html> 
</xsl:template> 

<xsl:template match="cd"> 
    <p> 
    <xsl:apply-templates select="title"/> 
    <xsl:apply-templates select="artist"/> 
    </p> 
</xsl:template> 

<xsl:template match="title"> 
    Title: <span style="color:#ff0000"> 
    <xsl:value-of select="."/></span> 
    <br /> 
</xsl:template> 

<xsl:template match="artist"> 
    Artist: <span style="color:#00ff00"> 
    <xsl:value-of select="."/></span> 
    <br /> 
</xsl:template> 

</xsl:stylesheet> 
  • Các apply-templates đầu tiên gọi cd mẫu mỗi lần một yếu tố được đặt tên "cd" đang gặp phải.

  • Mẫu cd, lần lượt gọi các mẫu titleartist để xử lý các phần tử con của <cd>.

  • title được xử lý trước artist. Lưu ý rằng thứ tự của các phần tử artisttitle trong XML nguồn không tạo ra sự khác biệt nào.

Bạn có thể nghĩ đến số apply-templates tương tự như cuộc gọi chương trình con bằng ngôn ngữ thủ tục.

1

Nếu bạn hiểu quy tắc mẫu bạn đã hoàn tất! Ngay cả khi nó không phải là dễ dàng, họ luôn luôn ngạc nhiên. Read the specs.

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