小编Nic*_*ick的帖子

XSLT:如何仅输出本地化数据?

给出以下XML:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="form.xsl"?>
<Document>
  <Translations>
    <Translation name="Resource">Invariant Resource</Translation>
    <Translation name="Resource" lang="en">English Resource</Translation>
    <Translation name="Resource" lang="en-CA">Canadian English Resource</Translation>
    <Translation name="Resource" lang="en-GB">British English Resource</Translation>
    <Translation name="Message">Invariant Message</Translation>
    <Translation name="Message" lang="en">English Message</Translation>
    <Translation name="Message" lang="en-CA">Canadian English Message</Translation>
    <Translation name="Message" lang="en-AU">Australian English Message</Translation>
  </Translations>
</Document>
Run Code Online (Sandbox Code Playgroud)

我需要选择一组翻译元素,使得该集合包含"name"属性的唯一值,以及给定语言环境的"最佳匹配"('en-US','es-MX','fr',等等.).当我说最佳匹配时,我想首先查找具有完全匹配区域设置的元素,然后根据前两个字符查找匹配,然后查找未指定lang的元素.

例如,如果我在转换上述数据时传入'en-CA'的语言环境,我想得到以下两个元素:

<Translation name="Resource" lang="en-CA">Canadian English Resource</Translation>
<Translation name="Message" lang="en-CA">Canadian English Message</Translation>
Run Code Online (Sandbox Code Playgroud)

但如果我传入'en-GB',我想得到:

<Translation name="Resource" lang="en-GB">British English Resource</Translation>
<Translation name="Message" lang="en">English Message</Translation>
Run Code Online (Sandbox Code Playgroud)

最后,如果我传入'es'或'es-MX'这样的值,我希望得到:

<Translation name="Resource">Invariant Resource</Translation>
<Translation name="Message">Invariant Message</Translation>
Run Code Online (Sandbox Code Playgroud)

我对XSLT非常陌生,但我认为我有一些有用的东西.我只需要知道是否有更好的方法(更简单,更优雅,更高性能等)

这是我的第一次尝试:

<?xml version="1.0" encoding="UTF-8" …
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath xquery localization

5
推荐指数
1
解决办法
729
查看次数

标签 统计

localization ×1

xml ×1

xpath ×1

xquery ×1

xslt ×1