【问题标题】:Use spring tag in XSLT在 XSLT 中使用 spring 标记
【发布时间】:2013-10-10 16:03:59
【问题描述】:

我有一个 XSL/XML 解析器来生成 jsp/html 代码。

使用 MVC 模型我需要访问 spring 库才能执行 i18n 翻译。 因此,给定 xml

<a>
  ...
  <country>EN</country>
  ...
</a>

并使用&lt;spring:message code="table_country_code.EN"/&gt;标签,根据浏览器语言选择,翻译成英格兰,Inglaterra等... 但是,XSL 不支持&lt;spring:message&gt; 标记。 这个想法是有一个像这样的 XSLT

<spring:message code="table_country_code.><xsl:value-of select="country"/>"/>`

拥有最终代码&lt;spring:message code="table_country_code.EN"/&gt;,并在基于 i18n 翻译的最终 JSP/HTML 中被识别。

当我进行解析以创建 XML 时,我也尝试在 Java 中创建 spring 标记,但我仍然遇到同样的错误。

The prefix "spring" for element "spring:message" is not bound.

[编辑]

我在这里看到了一些问题,比如使用bean:spring,但仍然有同样的问题。 有什么指点吗?

【问题讨论】:

    标签: java html xslt spring-mvc tags


    【解决方案1】:

    XSLT 必须是命名空间格式良好的 XML,因此您需要声明命名空间,并且不能在属性值中使用 &lt;

    Spring 3 - Accessing messages.properties in jsp

    建议命名空间应该是

    http://www.springframework.org/tags
    

    所以大概你想要一个 XSLT 代码

    <spring:message 
      xmlns:spring="http://www.springframework.org/tags"
      code="table_country_code.{country}"
    />
    

    其中{} 是一个属性值模板,用于评估XPath country

    【讨论】:

    • 感谢您的帮助。但是,当通过 XSLT 加载 HTML 时,spring 不会转换代码,即保留 &lt;spring:message xmlns:spring="http://www.springframework.org/tags" code="table_country_code.EN"/&gt; 消息而不是 England。知道为什么吗?
    • 我有一个带有一个 div 的 JSP,其中加载了另一个 JSP 页面,女巫调用 XSLT 转换.. 内部 JSP 有这个代码&lt;c:set var="xmltext"&gt; ${form.xmlResponse} &lt;/c:set&gt; &lt;c:import url="template.xsl" var="xslt"/&gt; &lt;x:transform xml="${xmltext}" xslt="${xslt}"/&gt;
    • 您没有真正提供足够的信息,但 JSP 是一种服务器端技术,如果您在客户端的阅读器浏览器中运行 XSLT,则为时已晚,如果您正在生成 JSP,您需要生成标记在服务器上
    • @X-Pippes 在服务器上运行 xslt(或在将文件放在服务器上之前)以生成您提供的文档,而不是提供对 xslt 的调用,但这可能适合也可能不适合你的架构,无法分辨。
    • XSLT 在服务器端,因为 JSP 和 XSLT 调用是在服务器中加载的,对吧? Javascript 在浏览器(客户端)上运行,但 JSP 加载在服务器上,我猜。有什么办法可以在春天强制“刷新”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多