作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在另一个问题中 - Getting directory listing from SVN for use in ANT dropdown
我询问了如何将 SVN 直接连接到我的 ANT 脚本。我得到的答案非常好,遵循将目录列表从 SVN 导出为 XML 然后使用 XSL 构建表单的行。
我没有使用 XSL 的经验,所以我想知道是否有人可以给我任何指示?更具体地说,通过 XSL 在 ANTForms 中构建表单。他们的网站似乎没有提及有关使用它的任何内容,我在 Google 上也找不到任何内容。
附加信息...
这是我从 SVN 返回的 XML 的一个小示例。
<?xml version="1.0"?>
<lists>
<list path="https://example.com/svn/website/tags">
<entry kind="dir">
<name>archive</name>
<commit revision="1337">
<author>itncj</author>
<date>2010-02-17T12:21:22.342500Z</date>
</commit>
</entry>
<entry kind="dir">
<name>milestone 1-0-0</name>
<commit revision="1302">
<author>jcb4337</author>
<date>2010-02-12T10:15:00.282625Z</date>
</commit>
</entry>
<entry kind="dir">
<name>milestone 1-0-0b</name>
<commit revision="1329">
<author>itncj</author>
<date>2010-02-17T12:08:56.248750Z</date>
</commit>
</entry>
</list>
最佳答案
我过去使用的一种策略是让 ANT 脚本生成另一个 ANT 构建文件,然后在运行中执行动态生成的 ANT 构建文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<project name="enhancedRSS" default="form" basedir=".">
<taskdef name="antform" classname="com.sardak.antform.AntForm"
classpath="${antform.home}/lib/antform.jar"/>
<target name="form">
<xsl:call-template name="ANTFORM" />
</target>
</project>
</xsl:template>
<xsl:template name="ANTFORM">
<antform title="Example ANTForm generated from XSLT">
<label>Some title label</label>
<textProperty label="LABEL" property="label1" required="true" focus="true"
tooltip="This is the first label, which will assign the value entered to the ANT property label1" />
<selectionProperty label="Values from SVN-CALL1:" property="svn-call1" separator=";">
<xsl:attribute name="values">
<xsl:call-template name="SVN-CALL1" />
</xsl:attribute>
</selectionProperty>
<selectionProperty label="Values from SVN-CALL2:" property="svn-call2" separator=";">
<xsl:attribute name="values">
<xsl:call-template name="SVN-CALL2" />
</xsl:attribute>
</selectionProperty>
<selectionProperty label="Values from SVN-CALL3:" property="svn-call3" separator=";">
<xsl:attribute name="values">
<xsl:call-template name="SVN-CALL3" />
</xsl:attribute>
</selectionProperty>
<radioSelectionProperty label="Release core files: " property="release" values="Yes;No" separator=";" />
<selectionProperty label="Which verion of the core:">
<xsl:attribute name="values">
<xsl:call-template name="SVN-CALL4" />
</xsl:attribute>
</selectionProperty>
<radioSelectionProperty label="Environment: " property="environment" values="Test;Production" separator=";" />
<textProperty label="Password" property="svn.password" required="true" password="true" />
<controlbar>
<button label="Cancel" type="cancel" />
<button label="Deploy" target="deploy" />
</controlbar>
</antform>
</xsl:template>
<xsl:template name="SVN-CALL1">
<xsl:text>Trunk</xsl:text>
<xsl:for-each select="/lists/list/entry/name">
<xsl:text>;</xsl:text>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
<xsl:template name="SVN-CALL2">
<!--Similar logic as SVN-CALL1-->
</xsl:template>
<xsl:template name="SVN-CALL3">
<!--Similar logic as SVN-CALL1-->
</xsl:template>
<xsl:template name="SVN-CALL4">
<!--Similar logic as SVN-CALL1-->
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<project name="enhancedRSS" default="form" basedir=".">
<taskdef name="antform" classname="com.sardak.antform.AntForm"
classpath="$/lib/antform.jar"/>
<target name="form">
<antform title="Example ANTForm generated from XSLT">
<label>Some title label</label>
<textProperty label="LABEL" property="label1" required="true" focus="true"
tooltip="This is the first label, which will assign the value entered to the ANT property label1"/>
<selectionProperty label="Values from SVN-CALL1:" property="svn-call1" separator=";"
values="Trunk;archive;milestone 1-0-0;milestone 1-0-0b"/>
<selectionProperty label="Values from SVN-CALL2:" property="svn-call2" separator=";" values=""/>
<selectionProperty label="Values from SVN-CALL3:" property="svn-call3" separator=";" values=""/>
<radioSelectionProperty label="Release core files: " property="release" values="Yes;No" separator=";"/>
<selectionProperty label="Which verion of the core:" property="svn-call4" values=""/>
<radioSelectionProperty label="Environment: " property="environment" values="Test;Production"
separator=";"/>
<textProperty label="Password" property="svn.password" required="true" password="true"/>
<controlbar>
<button label="Cancel" type="cancel"/>
<button label="Deploy" target="deploy"/>
</controlbar>
</antform>
</target>
</project>
document()
在单个 XSLT 中完成您需要的功能。
关于xslt - ANT ANTForm XSL - 备忘单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627983/
我是一名优秀的程序员,十分优秀!