1

私は問題があります。2 つの XML ファイルのコンテキストを 1 つに結合したいと考えています。これは、MAVEN プロジェクト (POM) および XSL の xslt-generator-maven-plugin の助けを借りて実現します。

次のように pom を構成しました。

<plugin>
<groupId>net.sf.xsltmp</groupId>
<artifactId>xslt-generator-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>transform-contex</id>
<goals>
<goal>many-to-one</goal>
</goals>
<configuration>
<srcDir>src/main/webapp/META-INF/</srcDir>
<srcIncludes>**/*context.xml</srcIncludes>
<xslTemplate>src/main/webapp/Temp.xsl</xslTemplate>
<destFile>${project.build.directory}/contextNEW.xml</destFile>
</configuration>
</execution>
</executions>
</plugin>

次のような最初のファイルがあります。

<?xml version="1.0" encoding="UTF-8"?>
<Context debug="0" reloadable="true" >
    <Resourcen name="jdbc/ChiDS"
               auth="Container" 
               type="javax.sql.DataSource"
               ...
</Context>

2番目のように:

<?xml version="1.0" encoding="UTF-8"?>
 <Context>
    <Realm className="org.apache.catalina.realm.MemoryRealm"
           pathname="webapps/${application.name}/WEB-INF/users.xml"/>
 </Context>

そして取得したい:

<?xml version="1.0" encoding="UTF-8"?>
<Context debug="0" reloadable="true" >  
<Resourcen name="jdbc/ChiDS"
               auth="Container" 
               type="javax.sql.DataSource"
               ...
<Realm className="org.apache.catalina.realm.MemoryRealm"
       pathname="webapps/${application.name}/WEB-INF/users.xml"/> 
</Context>

したがって、最初の XML に 2 番目の XML を追加します。正しい TEMP.xsl ファイルを作成する必要があります。

私は以下を使用する必要があります:

  • xslt-generator-maven-plugin

これを試しましたが、トークン化が問題です。

<xsl:output method="xml" indent="yes"/>

<xsl:param name="source-file-names" />
<xsl:variable name="names-sequence" select="tokenize($source-file-names,'\|')" />
<xsl:variable name="cfg-files" select="document($names-sequence)" />

どんな手掛かり?私はいくつかのことを試しましたが、これを解決しませんでした。

手伝ってくれてありがとう。

この XSL を試してみましたが (トークンの問題を修正しました)、成功しませんでした:

<xsl:output method="xml" indent="yes"/>

<xsl:param name="source-file-names" />
<xsl:variable name="names-sequence" select="fn:tokenize($source-file-names,'\|')" />
<xsl:variable name="cfg-files" select="document($names-sequence)" />

<xsl:template match="/">
    <xsl:copy>
        <xsl:apply-templates select="$cfg-files/*"/>
    </xsl:copy>
</xsl:template>

私はこのサンプルを見てきました: https://github.com/ivos/xslt-generator-maven-plugin/issues/1 しかし、私の側では成功しませんでした。

どんな助けでも大歓迎です。:)

4

2 に答える 2

0

結合する他の xml ファイルを含む 3 番目の xml ドキュメントを作成する必要があります。
これは役に立つと思います: http://www.ibm.com/developerworks/library/x-tipcombxslt/

于 2013-01-10T13:32:45.257 に答える
0

xslt 変数ドキュメント ロードを使用して 2 つの xml ファイルを結合した例をここで見ることができます。ここで見つけることができます:複数の XSL ファイルで XML を変換する

于 2013-01-11T12:30:53.640 に答える