2

我有一个 ASP.NET Web 应用程序,其中使用 XSLT 转换后端数据(XML 格式),生成输出到页面中的 XHTML。

简化代码:

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 文档可以包含一种语言,每种语言都有一个 XML 文档,或者,一个 XML 文档可以包含所有语言。以下示例中的 XML 格式遵循 Microsoft .NET 资源 (.resx) 文件(每种语言一个文件)或具有所有语言的单个 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 回答