首页 > 解决方案 > 在 XQuery Basex Web 应用程序中转义“<\”

问题描述

我想开发一个使用 Basex 作为后端和 Bootstrap HTML 框架作为前端的 Web 应用程序。Bootstrap 的示例“navbar-fixed”表明网页应该在其源代码中包含片段:

<script>window.jQuery || document.write('<script src="/docs/4.5/assets/js/vendor/jquery.slim.min.js"><\/script>')</script>

我尝试了很多方法从 XQuery 函数返回这样的字符串,但都失败了。例如:

declare function template:page() {
      <script>window.jQuery || document.write( '<script src="/docs/4.5/assets/js/vendor/jquery.slim.min.js"><\/script>' )</script>
};

不编译并给出错误“期望元素名称,找到'<'”。另一方面:

declare function template:page() {
      <script>window.jQuery || document.write( { '<script src="/docs/4.5/assets/js/vendor/jquery.slim.min.js"><\/script>' } )</script>
};

转义字符并给出错误的输出:

<script>window.jQuery || document.write( &lt;script src="/docs/4.5/assets/js/vendor/jquery.slim.min.js"&gt;&lt;\/script&gt; )</script>

有没有办法达到所需的效果?

此致

标签: web-applicationsxquerybasex

解决方案


在 XML 中,您可以使用 CDATA 部分,例如

declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";

declare option output:method 'html';
declare option output:html-version '5.0';

<script><![CDATA[window.jQuery || document.write( '<script src="/docs/4.5/assets/js/vendor/jquery.slim.min.js"><\/script>' )]]></script>

推荐阅读