【问题标题】:How to set the value of a web.xml context-param using XSLT and ANT?如何使用 XSLT 和 ANT 设置 web.xml 上下文参数的值?
【发布时间】:2015-09-08 18:24:41
【问题描述】:

我正在寻找一个 XSLT sn-p,它可以修改典型的 web.xml 文件中的 context-param 元素的值。在我的 web.xml 中,我有以下上下文参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>App Name</display-name>
 <context-param>
    <param-name>dojoUrl</param-name>
    <param-value>/dojo/src/1.7.1/dojo/dojo.js</param-value>
 </context-param>
</web-app>

我想要做的是将这个上下文参数的值更改为

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>App Name</display-name>
 <context-param>
    <param-name>dojoUrl</param-name>
    <param-value>/dojo/1.7.1/dojo/dojo.js</param-value>
 </context-param>
</web-app>

计划是在 XSLT 任务中使用 ANT 脚本,问题是我不知道 XSLT。只有当参数名称是 dojoUrl 时,我才需要能够更改参数值元素

【问题讨论】:

    标签: xslt ant


    【解决方案1】:
    <xsl:stylesheet version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:w="http://java.sun.com/xml/ns/javaee"
    >
      <xsl:output indent="yes" />
    
      <xsl:template match="@* | node()">
        <xsl:copy>
          <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
      </xsl:template>
    
      <xsl:template match="w:context-param[w:param-name='dojoUrl']/w:param-value">
        <xsl:copy>/dojo/1.7.1/dojo/dojo.js</xsl:copy>
      </xsl:template>
    </xsl:stylesheet>
    

    简短说明:

    第一个模板将每个 XML 节点复制到与任何其他模板都不匹配的输出中(它称为 身份模板,如果您有兴趣,请查找)。

    第二个模板专门匹配&lt;w:context-param&gt; 元素的&lt;w:param-value&gt; 子元素与w:param-name'dojoUrl'。它输出具有不同路径的新&lt;w:param-value&gt;

    【讨论】:

    • 谢谢我用 ant 任务试了一下 但它不起作用,第二个模板的匹配表达式有问题
    • @ams 为我工作,匹配表达式有效。在这里交叉检查:shell-tools.net/index.php?op=xslt - 只需复制/粘贴 XML 和 XSLT 并自己查看。
    • @ams 这没什么区别。
    • 未能理解 XML 命名空间是导致破产和婚姻失败的第一大原因。真实的故事。
    • @lwburk 哈哈!第二个问题是没有提到完整的 XML。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2011-05-10
    • 2011-04-15
    • 2012-03-10
    • 2016-10-25
    相关资源
    最近更新 更多