2008-09-15 29 views
14

Khi sử dụng trình duyệt để chuyển đổi XML (Google Chrome hoặc IE7), bạn có thể chuyển tham số vào biểu định kiểu XSLT thông qua URL không?Có thể chuyển tham số cho XSLT thông qua URL khi sử dụng trình duyệt để chuyển đổi XML không?

dụ:

data.xml

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="sample.xsl"?> 
<root> 
    <document type="resume"> 
     <author>John Doe</author> 
    </document> 
    <document type="novella"> 
     <author>Jane Doe</author> 
    </document> 
</root> 

sample.xsl

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

    <xsl:output method="html" /> 
    <xsl:template match="/"> 
    <xsl:param name="doctype" /> 
    <html> 
     <head> 
      <title>List of <xsl:value-of select="$doctype" /></title> 
     </head> 
     <body> 
      <xsl:for-each select="//document[@type = $doctype]"> 
       <p><xsl:value-of select="author" /></p> 
      </xsl:for-each> 
     </body> 
    </html> 
</<xsl:stylesheet> 

Trả lời

3

Bạn có thể tạo XSLT phía máy chủ, ngay cả khi việc chuyển đổi là khách hàng- bên.

Điều này cho phép bạn sử dụng tập lệnh động để xử lý thông số.

Ví dụ, bạn có thể ghi rõ:

<?xml-stylesheet type="text/xsl"href="/myscript.cfm/sample.xsl?paramter=something" ?> 

Và sau đó trong myscript.cfm bạn sẽ ra các tập tin XSL, nhưng với xử lý kịch bản động các tham số chuỗi truy vấn (điều này sẽ thay đổi tùy thuộc vào kịch bản ngôn ngữ bạn sử dụng).

+4

Phần hai của câu hỏi sẽ là nó có thể client-side chỉ? – user9547

6

Thật không may, không - bạn không thể chuyển các tham số cho XSLT chỉ ở phía máy khách. Trình duyệt web có các hướng dẫn xử lý từ XML; và trực tiếp biến đổi nó với XSLT.


Có thể chuyển giá trị qua URL chuỗi truy vấn và sau đó đọc chúng động bằng JavaScript. Tuy nhiên, chúng sẽ không có sẵn để sử dụng trong XSLT (các biểu thức XPath) - khi trình duyệt đã chuyển đổi XML/XSLT. Chúng chỉ có thể được sử dụng trong đầu ra HTML được hiển thị.

6

Chỉ cần thêm tham số dưới dạng thuộc tính vào tệp nguồn XML và sử dụng tham số đó với tư cách là một thành viên với biểu định kiểu.

xmlDoc.documentElement.setAttribute("myparam",getParameter("myparam")) 

Và hàm JavaScript như sau:

//Get querystring request paramter in javascript 
function getParameter (parameterName) { 

    var queryString = window.top.location.search.substring(1); 

    // Add "=" to the parameter name (i.e. parameterName=value) 
    var parameterName = parameterName + "="; 
    if (queryString.length > 0) { 
     // Find the beginning of the string 
     begin = queryString.indexOf (parameterName); 
     // If the parameter name is not found, skip it, otherwise return the value 
     if (begin != -1) { 
     // Add the length (integer) to the beginning 
     begin += parameterName.length; 
     // Multiple parameters are separated by the "&" sign 
     end = queryString.indexOf ("&" , begin); 
     if (end == -1) { 
     end = queryString.length 
     } 
     // Return the string 
     return unescape (queryString.substring (begin, end)); 
    } 
    // Return "null" if no parameter has been found 
    return "null"; 
    } 
} 
Các vấn đề liên quan