Java 以编程方式创建xslt文件

Java 以编程方式创建xslt文件,java,xml,xslt,dom,dynamically-generated,Java,Xml,Xslt,Dom,Dynamically Generated,我知道我可以使用java中的DOMapi以编程方式创建xml文件,如下所示: DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document document = documentBuilder.newD

我知道我可以使用java中的
DOM
api以编程方式创建
xml
文件,如下所示:

DocumentBuilderFactory documentBuilderFactory = 
    DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();

Document document = documentBuilder.newDocument();
Element rootElement = document.createElement("map");
document.appendChild(rootElement);

Element em = document.createElement("string");
em.setAttribute("name", "FirstName");
....
但是有没有API来构造
xslt
树呢?(例如像Dom这样的api)

我需要这样的东西:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:template match="root">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="my-page">
      <fo:region-body margin="1in"/>
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence master-reference="my-page">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>
        <fo:external-graphic width="100pt" height="100pt" content-width="50pt" content-height="50pt" src="images/shopping-cart_100.jpg"/>
      </fo:block>
      <fo:block>Good Morning, <xsl:value-of select="name" />!</fo:block>
      <fo:block>
        <fo:table>
             <fo:table-body>
                <fo:table-row>
                    <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold">
                        <fo:block>

早上好
以及:



提前感谢。

因为XSLT也是XML,所以您可以简单地使用相同的策略:

...
Document document = documentBuilder.newDocument();

Element rootElement = document.createElement("xsl:stylesheet");
// adding attributes like namespaces etc...

document.appendChild(rootElement); 
Element em = document.createElement("xsl:template");
em.setAttribute("match", "/");
等等


但是它不是很优雅。你应该使用一个库或一个框架,你应该很容易在谷歌上找到一个。你可以像创建XML文件一样创建XSLT,因为XSLT是XML文件


但是,如果您必须大量处理XML/XSLT转换,ApacheCook 3有一个非常轻量级的XML/XSLT管道系统作为库使用,而不是手动处理所有XML dom内容和XSLT转换。

dom是一种非常麻烦的XML创建方法

有一种更好的方法——使用XSLT

XML越复杂,使用XSLT而不是DOM来创建它的收益就越大


没有理由不能使用XSLT来创建XSLT(甚至还有一个特殊的声明xsl:namespace alias使它更容易使用-搜索xsl:namespace alias将显示它的使用示例。

XSLT
是有效的
XML
,所以您可以。@grampage请花点时间用答案强调您的注释。如果您可以构造XML,那么您就可以构造XSLT.)。。xslt是XML…您好,您是否找到了用于此的API。请分享我个人使用的公认答案,但您可以选择下面适合您情况的任何答案。嗯,它非常复杂:)您可以像我所示创建xslt:'Element rootElement=document.createElement(“xsl:stylesheet”);rootElement.setAttribute(“版本”、“1.1”)'等等。或者你可以尝试使用一个可以帮助你这样做的库……也许Simone Gianni提到的Apache Cocoon可以完成这项工作,但我不能说,因为我以前从未使用过它……请你具体说明这对我有何帮助???我需要一个
API
通过java动态创建
xslt
文件!!!@Mi凯迈尔斯:看这里的一个例子:@DimitreNovatchev在这个页面上没有找到任何东西-一定是旧的!@MikeMyers:我访问它好的-一定是你的互联网连接有问题。它打开了页面,但它说抱歉,但没有找到所请求的ArchiveCacon的结果在我的问题中没有做任何事情!
...
Document document = documentBuilder.newDocument();

Element rootElement = document.createElement("xsl:stylesheet");
// adding attributes like namespaces etc...

document.appendChild(rootElement); 
Element em = document.createElement("xsl:template");
em.setAttribute("match", "/");