2

次のようにJavaでAPIxmlを使用して、プログラムでファイルを作成できることを知っています。DOM

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>

と:

              <xsl:for-each select="./friend">
                <fo:table-row>
                <fo:table-cell border="solid 1px black" text-align="center">
                    <fo:block>
                        <xsl:value-of select="position()" />
                    </fo:block>
                </fo:table-cell>
                <fo:table-cell border="solid 1px black" text-align="center">
                    <fo:block>
                        <xsl:value-of select="name" />
                    </fo:block>
                </fo:table-cell>
                <fo:table-cell border="solid 1px black" text-align="center">

前もって感謝します。

4

3 に答える 3

3

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", "/");

等々...

しかし、それはあまりエレガントではありません。代わりにライブラリまたはフレームワークを使用する必要があります。グーグルで簡単に見つけることができます。

于 2012-05-08T15:29:45.023 に答える
1

DOM は、XML を作成するかなり面倒な方法です。

はるかに良い方法があります - XSLT を使用してください。

XML が複雑になればなるほど、DOM ではなく XSLT を使用して XML を作成するメリットが大きくなります。

XSLT を使用して XSLT を作成できない理由はありません (少し簡単にするための特別な宣言 xsl:namespace-alias もあります。 xsl:namespace-alias を検索すると、その使用例が表示されます。

于 2012-05-08T17:00:11.900 に答える
1

XSLT は XML ファイルであるため、XML ファイルを作成するのと同じ方法で XSLT を作成できます。

ただし、XML/XSLT 変換を頻繁に処理する必要がある場合、Apache Cocoon 3 には、すべての XML dom と XSLT 変換を手動で処理する代わりに、ライブラリとして使用する非常に軽量な XML/XSLT パイプライン システムがあります。

于 2012-05-08T15:30:24.373 に答える