2009-11-03 43 views
17

Tôi có một tệp xsl mà tôi cần sử dụng các thông số từ một nguồn bên ngoài. Tôi đang sử dụng Java và mã của tôi trông giống như sau:Chuyển đổi XSL trong Java với các tham số

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer xsltTransformer = transformerFactory.newTransformer(xsltSource); 
xsltTransformer.setParameter(parameterName, parameterValue); 

Tuy nhiên, một ngoại lệ được ném vào dòng 2 - Variable hoặc tham số 'variable_name' là undefined. Tôi nhận ra rằng XSL được biên dịch và có thể được biên dịch khi máy biến áp được tạo ra.

Vì vậy, làm cách nào để chuyển các tham số cho chuyển đổi của tôi? Phương thức setParameter được sử dụng như thế nào?

+0

đúp kiểm tra để chắc chắn rằng bạn đã đánh vần parameterName đúng và rằng trường hợp phù hợp với những gì được khai báo trong XSLT. –

Trả lời

43

Nếu bạn vượt qua một tham số như:

transformer.setParameter("render_id", "1234"); 

tham số có thể được nhặt bởi biến đổi: Câu trả lời

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/> 

<!-- Receives the id of the menu being rendered. --> 
<xsl:param name="render_id" /> 
+3

Great Ans, FYI nếu tham số có bất kỳ giá trị nào trong xsl, nó sẽ bị bỏ qua và giá trị được gửi bởi Java sẽ được ưu tiên – SoulMan

2

RSP là chỗ trên. Cảm ơn. Chỉ muốn thêm rằng bạn không thể chuyển một tham số cho một biến theo cùng một cách (tôi đang thiết lập các tham số thông qua TransformerFactory của Java).

Tôi đã sai lầm khi biến suy nghĩ và params được hoán đổi cho nhau :)

+1

Đây là câu trả lời hay về sự khác biệt giữa 'param' và' variable': http://stackoverflow.com/a/11854157/1813669 – Scadge

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