2

XSLT の疑いについては、これを参考にしてください。私の現在のプロジェクトでは、多くの XSLT ファイルを作成する必要があります。これらの変換では、実行される一般的な手順はほとんどありません。for.eg。入力 xml から要素値の大文字を変更します。現在、XSLT で以下のコードを使用しているため、50 個の XSLT が作成されると、このコードが複製されます。

<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
            <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> 
            <xsl:message>UPPERCASE is <xsl:value-of select="translate($MsgType, $smallcase, $uppercase)" /></xsl:message>  

コードの重複を避ける方法についてアドバイスを求めています。utility などの一般的な XML ファイルを作成して、大文字と小文字の変数を宣言し、これらの変数を xslt 内で呼び出すことができますか? 他のプログラムに似ています。lang は Java のように、共通の関数をグローバルに宣言し、異なるクラスで使用できます。基本的に、グローバルに宣言してすべての xslt で使用できるかどうかを知りたいです。

4

2 に答える 2

2

<include/>すべてのグローバル変数が定義された XSLT ファイルをインクルードするために使用します。http://www.w3.org/TR/xslt#element-includeも参照してください

すべての変数をファイル「my_global_variables.xsl」に入れます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:variable name="myVariable" select="'xyz'"/>

<!-- more variables to add -->

</xsl:stylesheet>

「my_global_variables.xsl」を含め、メインのスタイルシートは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:include href="my_global_variables.xsl"/>

<xsl:template match="/">
    
</xsl:template>
</xsl:stylesheet>

<import>スタイルシートをインポートできる要素もあります。ただし、インポートされたスタイル シートは、インポートするスタイル シートよりも優先順位が低いため、この場合は<include>.

于 2012-09-11T11:10:07.337 に答える
1

コードの重複を避ける方法についてアドバイスを求めています。utility などの一般的な XML ファイルを作成して、大文字と小文字の変数を宣言し、これらの変数を xslt 内で呼び出すことができますか?

<xsl:import><xsl:include>は、このタスク用に特別に設計された 2 つの XSLT 命令です。

スタイルシート モジュールのグローバル変数 (xsl:stylesheet要素の子) は、このスタイルシートを含むスタイルシートでアクセスできます。インポートのルールはもう少し複雑ですが、インポートされたスタイルシートのグローバル変数間に名前の競合がなければ、それらはすべてインポート スタイルシートからアクセスできます。

最後に、www.w3schools.com を使用しないことをお勧めします -- http://www.w3fools.comで理由を確認してください。

于 2012-09-11T12:58:39.893 に答える