2010-08-11 35 views
26

Các ví dụ ởCách liên kết tệp XML với tệp XSLT?

http://en.wikipedia.org/wiki/XSLT

hoặc

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

dường như là độc lập file XML và XSLT. Họ không phải được liên kết? Hay bạn bằng cách nào đó đặt chúng vào cùng một tệp? Nếu không, làm cách nào để một tệp biết cách hút dữ liệu từ tệp khác?

+1

Tôi đồng ý rằng một số trang W3Schools, chẳng hạn như trang đó, không đủ.Họ có thể dễ dàng bao gồm đề cập đến việc liên kết biểu định kiểu, như được thực hiện trong [XSLT - Transformation] (http://www.w3schools.com/xsl/xsl_transformation.asp). – user34660

Trả lời

47

Bạn có thể thêm này sau khi tuyên bố xml

<?xml-stylesheet type="text/xsl" href="yourxsl.xsl"?> 
+3

điều này là đưa vào tệp XML (dữ liệu)? Đây có phải là cách duy nhất hoặc bạn có thể nói với một tệp XSLT để lấy dữ liệu từ tệp XML nào hoặc có tệp thứ 3 bao gồm cả tệp XML có tệp XSLT không? –

+0

nếu bạn sử dụng Altova XMLSpy, bạn có thể thêm ví dụ Theo mệnh đề . Bạn có thể sử dụng URL tương đối hoặc tuyệt đối/đường dẫn tại đó [trình phân tích cú pháp nhận xét ở đây dường như ăn tiền tố http: // từ url của tôi]. Các công cụ khác có thể có cú pháp tương tự. Sẽ tốt hơn nếu người ta có thể sử dụng một số cú pháp tiêu chuẩn thay vì trong tệp XSL (vì có trường hợp như tệp này ở nơi tệp XML ở xa và bạn không thể chạm vào nó) –

+0

thay thế có thể bao gồm tệp XML vào một XML khác tệp bằng cách nào đó chỉ định biểu định kiểu, nhưng không chắc chắn nếu điều này là đơn giản (có thể cần phải đặc biệt là tác giả của XPath, v.v.) –

1

Bạn cần một công cụ bên ngoài hoặc thư viện để áp dụng một XSLT transform để Xml. Tuy nhiên, cách bạn làm điều này phụ thuộc vào môi trường lập trình của bạn .Net là XslCompiledTransform là lớp được sử dụng để áp dụng phép biến đổi Xslt thành một phần của Xml (hoặc một tệp hoặc Xml trong bộ nhớ).

Thay thế bạn có thể sử dụng công cụ dòng lệnh của Microsoft xslt.exe - bạn sẽ cần phải tự nghiên cứu cách thực hiện tương tự trong các ngôn ngữ lập trình/hệ điều hành khác.

3

Bạn cũng có thể thực hiện việc chuyển đổi trong một trang html:

<script type="text/javascript"> 
    var xml = new ActiveXObject("Microsoft.XMLDOM") 
    xml.async = false 
    xml.load("some_xml.xml") 
    var xsl = new ActiveXObject("Microsoft.XMLDOM") 
    xsl.async = false 
    xsl.load("some_xsl.xsl") 
    document.write(xml.transformNode(xsl)) 
</script> 
+0

nếu nó không phải là IE thì sao? –

+0

Bạn nhận mẫu tại: http://www.w3schools.com/xml/xml_parser.asp Cách thực hiện trong các trình duyệt hiện đại :) –

3

Một tập tin không biết phải "ngậm trong dữ liệu" các tập tin khác, vì các tập tin không phải là những gì sẽ làm quá trình xử lý.

Một số loại bộ xử lý XSLT sẽ thực hiện việc này, và cách thức nó sẽ được thông báo những gì cần làm thay đổi để có thể xử lý các trường hợp sử dụng khác nhau.

Trong trường hợp render toàn bộ biến đổi của một tài liệu XML khi nó được hiển thị trong trình duyệt, sau đó xử lý-hướng dẫn:

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 

(Thực sự nó cần phải có được "text/xml" cho các loại vì đó là loại mime của một tài liệu XSL, nhưng điều này nằm trong phần cuối của cuộc chiến trình duyệt và việc triển khai tính năng trình duyệt vẫn thường xảy ra nhanh hơn tốc độ thông thường).

Nếu bạn đang kiểm soát biến đổi theo chương trình bằng thư viện sắp xếp (có các đối tượng cho javascript và thư viện phía máy khách bằng bất kỳ ngôn ngữ nào bạn muốn thực hiện), thì bạn có đủ điều khiển chi tiết những gì được chuyển đổi bởi những gì. Một số trường hợp thú vị ở đây bao gồm.

  1. Bạn thậm chí có thể có tài liệu với nút nội dung và nút biến đổi, chọn chúng và chạy biến đổi.

  2. Nếu bạn đang chạy cùng một phép biến đổi trên nhiều tài liệu XML, việc gọi một số loại phương thức "PreCompile()" hoặc tương tự sẽ là một cú đánh trên cuộc gọi đó để mang lại lợi ích cho tất cả các biến đổi tiếp theo .

  3. Bạn có thể chuyển giá trị vào thông số cấp cao nhất trong XSLT.

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