Tag: xslt

使用xPath修改XML文件

我想使用xPath修改现有的XML文件。 如果该节点不存在,则应创建该节点(如果需要,则与其父节点一起创建)。 一个例子: true 1.0 这里有几个我想插入/修改的xPath: /configuration/param1/text() -> 4.0 /configuration/param2/text() -> “asdf” /configuration/test/param3/text() -> true 之后XML文件应如下所示: true 4.0 asdf true 我试过这个: import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; try { DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); Document doc = domFactory.newDocumentBuilder().parse(file.getAbsolutePath()); XPath xpath […]

如何从xpath表达式获取实际的Node顺序(java)

如果我有一个使用preceding-sibling::的XPath表达式,我得到的NodeList不是正确的顺序。 我怎样才能得到正确的订单? 例: hello world !!! 如果我尝试评估XPath表达式: /library/book[3]/preceding-sibling::book ,我得到这个顺序: BOOK1 第二册 但是,如果我尝试评估: /library/book[3]/preceding-sibling::book[1] ,我得到Node : 第二册 那么,我怎样才能从这种表达式中获得真正的顺序: /library/book[3]/preceding-sibling::book ?

Java中的XSLT转换极其缓慢

我尝试使用XSLT转换XML文档。 作为输入,我有www.wordpress.org XHTML源代码,而XSLT是虚拟示例检索站点的标题(实际上它什么都不做 – 它不会改变任何东西)。 我使用的每个API或库,转换大约需要2分钟! 如果你看看wordpress.org源码,你会发现它只有183行代码。 正如我用Google搜索,这可能是由于DOM树的构建。 无论XSLT多么简单,它总是2分钟 – 所以它确认了它与DOM构建有关的想法,但无论如何我不应该花2分钟。 这是一个示例代码(没什么特别的): TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = null; try { transformer = tFactory.newTransformer( new StreamSource(“/home/pd/XSLT/transf.xslt”)); } catch (TransformerConfigurationException e) { e.printStackTrace(); } ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); System.out.println(“START”); try { transformer.transform(new SAXSource(new InputSource( new FileInputStream(“/home/pd/XSLT/wordpress.xml”))), new StreamResult(outputStream)); } catch (TransformerException e) { e.printStackTrace(); […]

在XSLT中调用Java实例方法

我正在使用Saxon(我可以在必要时使用Xalan)XSLT处理器进行一些转换。 我想将下面对象的实例作为参数传递给XSLT模板。 public class Test { private String value; public Test(String v) { value = v; } //getters, setters etc. } 所以我创建了这个对象,即。 Test test = new Test(“test”); transformer.setParameter(“test”, test); 在XSLT文件中,我将param声明为: 现在我的问题是如何在XSLT中对此对象调用任何实例方法(即getValue())? 它甚至可能吗? 我知道我可以调用不同Java类的静态方法,但这并不是我想要的。 此外,是否可以在XSLT中填充Java对象,即。 调用setter方法作为对象的实例,然后在转换完成后将此对象与Java代码中的新值一起使用?

如何使用XSLT v1.0插入文本而不是使用XSLT v2.0正则表达式?

我有一个xml文件,它描述(除其他外)具有描述完全限定的java类名的属性值的元素。 我正在尝试编写一个XSLT转换来修改此文件中描述的类名,这样(例如) com.example.MyClass ocurrances将变为com.example.MockMyClass 。 以下是原始文件片段上下文中的示例: templates/MyTemplate.vm 我希望结果如下: templates/MyTemplate.vm 我正在使用Java JAXP API进行这种转换,并编写了一个可爱的符合XSLT 2.0的regex例程来获得我想要的结果,但却发现Java 5不支持正则表达式支持所需的XSLT 2.0。 所以我的问题是,使用古老的JAXP XSLT 1.0 API实现这一目标的最佳方法是什么? 也就是说,不使用正则表达式。 我寻找类似的问题,但反向引用正则表达式组的要求似乎使这个问题变得棘手。 这个问题是一个开始,但我需要在匹配的字符串中插入文本,而不是仅仅替换 。 作为参考,这是我的正则表达式(XSLT 2.0)尝试: Mock

如何让XSLT在Java中返回UTF-8

我正在尝试让我的XSL脚本使用UTF-8编码。 像åäö和希腊字符这样的人物就像垃圾一样。 让它工作的唯一方法是将结果写入文件。 如果我将它写入输出流,它只返回垃圾(System.out工作,但这可能是因为它的重定向到文件)。 结果需要从servlet返回,请注意它不是servlet配置问题。 我可以从servlet返回带有希腊字符的硬编码字符串,它工作正常,所以这是转换的问题。 这是我目前的(简化)代码。 protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { try { response.setCharacterEncoding(“UTF-8”); response.setContentType(“text/html; charset=UTF-8”); final TransformerFactory factory = this.getFactory(); final File inFile = new File(“infile.xml”); final File xslFile = new File(“template.xsl”); final File outFile = new File(“outfile.html”); final Templates templates = factory.newTemplates(new StreamSource(xslFile)); final Transformer […]

如何从java代码调用XSL模板?

如何从java代码调用XSL模板? 请注意,我不需要知道如何通过Java中的XSL转换xml docuemnt。 我需要的是,我有一些XSLT文档包含一个做某事的模板,例如: My CD Collection Title Artist . . 然后我需要从java代码调用该模板。 如何 ?? 谢谢All guyz,我做到了,请参阅: http : //m-hewedy.blogspot.com/2009/12/how-to-call-xslt-template-from-your.html

使用XSLFO显示SVG

我的第一个问题; 我目前正在修复使用XSLFO将我们的语法转换为FO并最终将其转换为PDF的图形服务。 以前我们一直在使用PDF导出的网页上的PNG图表,但这会产生非常难看的结果,所以我们决定使用SVG替代PDF。 但是,SVG似乎没有正确扩展到SVGcanvas。 以下是运行XSLFO之前的语法: 这是我正在使用的XSLFO: SVG确实出现在PDF中,它确实包含在canvas中 – 但无论出于何种原因,我都无法正确地进行缩放。 它真的非常非常庞大,结果是一个非常裁剪的SVG版本。 我在这里没有任何建议 – 这里有没有人有这方面的经验? PS:使用最新版本的Batik创建图像,并正确设置宽度和高度。

xmlsignatureforms的XSLT转换,是xmldocument的一部分?

我有一个HTML页面(表单),用户将在其中输入他的详细信息。 要输入的详细信息 名称 年龄 薪水 州 市 现在当用户输入所有细节并单击按钮时,我将创建包含用户详细信息的xml文件 abc 40 20000 xyz abc 在此之后,我想使用XMLSignature签署此xml文件。 我想只使用XSLT转换和一些摘要和签名方法签署文档的两个元素,即name和salary元素。 我的问题是如何在xmlsignature的transform元素中使用XSLT变换。 实现这一目标的最佳方法是什么? 当用户在HTML页面中按下另一个按钮时 ,还会出现另一个问题,即应显示已签名的元素,即应向用户显示名称和工资。 我怎样才能做到这一点。 XSLT转换也会在这里发挥作用吗? 注意 : 我正在使用Java库来实现XMLSignature

如何从Java生成RTF?

我在基于网络的工具上工作,我们提供定制的打印。 目前,我们使用Java构建XML结构,将其提供给XMLmind XSL-FO转换器以及定制的XSL-FO,然后生成RTF文档。 这在简单的布局上工作得很好,但是在某些问题上我需要更好的控制,或者我根本不能做我想做的事情。 F.ex:页眉,页脚(例如,页码),列中的表格,在第一页上具有单独的列设置或不同的页码信息等。 你们中的任何人都知道更好的选择,无论是XMLmind还是我们从数据到RTF的方式,即Java-> XML,XML + XSL-> RTF? (我们唯一的实际限制是JVM。)