thẻ ghi lưu trữ: XSLT

XSLT và jQuery mẫu

Tôi đã làm rất nhiều của XSLT và jQuery và nghĩ rằng tôi muốn chia sẻ một vài đoạn mà những người khác có thể tìm thấy hữu ích trong tương lai.

Ví dụ 1: Phát ra đơn giản JavaScript / jQuery trong XSLT:

<XSL:trận đấu tiêu bản = "cái gì" XML:vũ trụ = "bảo vệ">

  <!– Trống trong lĩnh vực này ẩn truy vấn thân thiện bộ lọc –>
  <kiểu kịch bản = "text/javascript">
    $(tài liệu).sẵn sàng(chức năng(){
      $("#QueryFriendlyFilters").Val("rỗng");
    });
  </kịch bản>

</XSL:tiêu bản>

Mà bit phát ra một số JavaScript mà chờ đợi cho trang để hoàn tất tải (vì các $(tài liệu).sẵn sàng(…)) và sau đó bộ giá trị của một lĩnh vực ẩn tên QueryFriendlyFilters với giá trị chữ "rỗng".

Ví dụ 2: Sử dụng <XSL:Nếu> để kiểm tra "lớn hơn",  "ít hơn", vv.

<XSL:trận đấu tiêu bản = "cái gì" XML:vũ trụ = "bảo vệ">

  <div id = "fdcAllFilters">
 
    <XSL:Nếu test="@Count>0">
      <div class = "fdcFilterLabel">Hiện tại bộ lọc:</khoảng>
    </XSL:Nếu>

    <!– nhiều thứ xảy ra ở đây. –>

</XSL:tiêu bản>

Đoạn mã trên sẽ kiểm tra xem liệu một thuộc tính được đặt tên "Tin cậy" của nguyên tố "một cái gì đó" lớn hơn 0.  XML sau này sẽ là một cái gì đó như:”

<một cái gì đó Count = "5" />

Ví dụ 3: Iterate qua tất cả các yếu tố, xen jQuery cuộc gọi.

<!– Iterate qua tất cả các bộ lọc và hiển thị đúng  liên kết. –>
<XSL:cho mỗi chọn = "UserFilter">

  <một tầng lớp = "FilterHref" href = "javascript:mySubmitPage('RemoveUserFilter','{@ ID}’)">[X]</một>

  <div class = "fdcFilterLabel"><XSL:giá trị của select="@FilterValue"/></khoảng>

  <kiểu kịch bản = "text/javascript">

    $(tài liệu).sẵn sàng(chức năng(){
        <XSL:văn bản><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:văn bản>\"<XSL:giá trị của select="@FilterValue"/>\"<XSL:văn bản><![CDATA["));]]></XSL:văn bản>
    });

  </kịch bản>

</XSL:cho mỗi>

Đoạn mã trên là phức tạp nhất và có thể có cách dễ dàng hơn để làm điều đó.

XML sau này trông gần như thế này:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Đoạn này iterating thông qua <UserFilter> các nút. 

Nó lần đầu tiên phát ra một neo từ khóa đó khi nhấp invokes hàm JavaScript là đã có trên trang, "mySubmitPage" và đã vượt qua giá trị của một thuộc tính trên các <UserFilter> nút đặt tên "ID". 

Nó sau đó phát ra một số jQuery mà chờ đợi cho trang để tải.  JQuery đó Cập Nhật một lĩnh vực ẩn tên là "QueryFriendlyFilters" bằng cách thêm giá trị của thuộc tính FilterValue.  Lưu ý tất cả các điên <XSL:văn bản> và <![CDATA[ … ]]> công cụ.

Đó là nó, hy vọng nó sẽ giúp!

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Vô tận làm tổ <div> Tags và jQuery

Điều này có vẻ như một chủ đề oddball, I 'm not sure it's thực sự giá trị viết blog về, nhưng đó đã không bao giờ ngừng lại tôi trước khi, Vì vậy ở đây chúng tôi đi Nụ cười

Tôi đang làm việc một dự án mà tôi kéo một số dữ liệu từ một tìm kiếm, đóng gói nó vào thư XML và sau đó là XML mà cuối cùng được chuyển đổi thành HTML thông qua XSLT.  Đó là rất nhiều của jQuery tham gia, một chút trong đó thực hiện một số chức năng tabbing.  Khi bạn bấm vào một tab (Thực sự, một <div>), jQuery invokes .hide() và .show() trên các divs (tải ban đầu trang tải tất cả nội dung, do đó, có không có postbacks trong trường hợp này).

Một loạt các giờ trước đây, tab chuyển mạch logic bắt đầu cư xử erratically và nó sẽ không hiển thị một trong các tab của tôi.  Theo tôi cuối cùng dõi nó xuống đến một thực tế rằng internet explorer (tối thiểu) nghĩ rằng các <div> Tags lồng nhau đến nay, sâu xa hơn nhằm mục đích.Thanh công cụ phát triển sẽ hiển thị:

-<DIV id = "Tab1Content">
  -<div>
    -<div>
      -<DIV id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <-cuối cùng Hiển thị nó đã được đóng cửa tất cả các cách xuống ở đây!

Vì vậy, Nếu tôi đã làm một $("#Tab1Content").ẩn(), Tôi cũng sẽ ẩn Tab2 và tôi không bao giờ có thể hiển thị Tab2 nếu tôi cũng không cho Tab1.  Tôi sao chép và dán mã vào visual studio và nó cho thấy tất cả các div lót lên độc đáo, cũng giống như họ đã nghĩa vụ phải thực hiện, Tìm kiếm như thế này:

-<DIV id = "Tab1Content">
  +<div>
  +<div>
-<DIV id = "Tab2Content">
  +<div>
  +<div>

Tôi đánh đập đầu của tôi vào tường cho một thời gian và nhận thấy rằng trong thực tế HTML mã tạo ra rất nhiều sản phẩm nào <div> Download, giống như:

<cơ thể>

  <DIV id = "Tab1Content">

    <DIV id = "row1" />
    <DIV id = "row2" />

  </div>

  <DIV id = "Tab2Content">

    <DIV id = "row1" />
    <DIV id = "row2" />

  </div>

</cơ thể>

(Ở trên là waaaaaaaaaaaay đơn giản.  Các thẻ div có sản phẩm nào là hoàn toàn hợp lệ. Một số của tôi <div> Tags được đầy đủ các nội dung, nhưng nhiều hơn nữa không.  Tôi đến việc thực hiện đó của tôi <XSL:cho mỗi> chỉ thị phát ra các hình thức ngắn div tags khi xsl:cho mỗi không ' tìm thấy bất kỳ dữ liệu.  Tôi buộc phải bình luận một HTML đầu ra, như được hiển thị:

image

 

Sau khi tôi đã làm điều đó, Tất cả div xếp độc đáo và chuyển đổi thẻ của tôi bắt đầu làm việc.

Như mọi khi, Tôi hy vọng điều này sẽ giúp một người nào đó trong một pinch.

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

Ví dụ: XSLT tạo HTML Href

Tôi đã làm một chút XSL thứ gần đây và nghĩ rằng tôi muốn đặt cùng một mẫu để tham khảo trong tương lai của tôi và có thể sẽ là giá trị cho tất cả chúng ta XSLT-ers thực hiện một cuộc sống trong các internets.

Xem xét các XML sau đây:

<Bá tước FdcSearchTabsCollection = "2">
  <SearchTab nhãn = "ngành công nghiệp" SortOrder = "00" nhãn = "Công nghiệp" SearchConstraints = "contenttype:Ngành công nghiệp" TabID = "831b2a74-98c4-4453-8061-86e2fdb22c63" />
  <SearchTab nhãn = "thực hành" SortOrder = "01" nhãn = "Thực hành" SearchConstraints = "contenttype:PracticeGroups" TabID = "678e206b-6996-421f-9765-b0558fe1a9c0" />
</FdcSearchTabsCollection>

Snippet XSL sau sẽ tạo ra một danh sách được sắp xếp của hrefs tab:

<XSL:trận đấu tiêu bản = "FdcSearchTabsCollection" XML:vũ trụ = "bảo vệ">
   
    <!– "Tất cả" tab –>
    <a href = "javascript:ViewTab('Tất cả')">Xem tất cả</một>
   
    <!– Mỗi cá nhân tab –>
    <!– Iterate qua tất cả các tab và hiển thị đúng  liên kết. –>
    <XSL:cho mỗi chọn = "SearchTab">
      <XSL:sắp xếp select="@SortOrder"/>

      …
      <a href = "javascript:ViewTab(‘{@ TabID}’)"><XSL:giá trị của select="@Label"/></một>
    </XSL:cho mỗi>

    <BR /> 
   

   </XSL:tiêu bản>

Đây là những gì nó trông giống như trong SharePoint:

SNAGHTML78aa2cb

 

 

</kết thúc>

Đăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin