2

バックエンド データ (XML 形式) が XSLT を使用して変換され、ページに出力される XHTML を生成する ASP.NET Web アプリがあります。

簡略化されたコード:

XmlDocument xmlDoc = MyRepository.RetrieveXmlData(keyValue);
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(pathToXsl, XsltSettings.TrustedXslt, null);
StringWriter stringWriter = new StringWriter();
xsl.Transform(xmlDoc, null, stringWriter);
myLiteral.Text = stringWriter.ToString();

現在、私の XSL ファイルには、XHTML マークアップ要素と、現在英語のテキスト ラベルが含まれています。例えば:

<p>Title:<br />
  <xsl:value-of select="title"/>
</p>
<p>Description:<br />
  <xsl:value-of select="desc"/>
</p>

テキスト ラベル (上記のタイトルと説明) をローカライズしてほしい。.NET リソース ファイル (.resx) を使用することを考えていましたが、変換時に resx 文字列リソースが XSLT にどのように取り込まれるのかわかりません。

XSLT ファイルのロケール固有のコピーを作成しないことを希望します。これは、多くの変換ロジックが重複することを意味するためです。

(注: XML データは既にローカライズされているため、変更する必要はありません)

4

3 に答える 3

1

XSLTファイルのテキストをプレースホルダー要素に置き換えてから、resxファイルを取得し、それを使用してプレースホルダーを目的のテキストに置き換える別のローカライズ変換を記述します。

<p><localized name="title"/>:<br />
  <xsl:value-of select="title"/>
</p>
<p><localized name="desc"/>:<br />
  <xsl:value-of select="desc"/>
</p>
于 2009-09-22T14:53:17.347 に答える
1

XML ドキュメントには、言語ごとに 1 つの XML ドキュメントを含む 1 つの言語を含めるか、すべての言語を含む単一の XML ドキュメントを含めることができます。次の例の XML 形式は、Microsoft .NET リソース (.resx) ファイル (言語ごとに 1 つのファイル) またはすべての言語を含む単一の TMX (翻訳メモリ交換) ドキュメントに従います。ただし、テキストの読み取りに使用される XPath が一貫している限り、任意の形式を使用できます。

http://www.codeproject.com/Articles/338731/LocalizeXSLTにある完全な機能サンプルについては、私の記事「XSLT をローカライズする方法」を参照してください

于 2010-01-28T17:30:50.400 に答える
0

.Resx ファイルは XML ファイルであるため、 document 関数を使用して、XSLT の別のソースとして使用できます。

于 2009-09-24T16:06:02.193 に答える