xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message name="msg23">Error 23: The drive is full.</message>
<message name="msg42">Error 42: The file is not found.</message>
</messages>
xsl文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- these 2 elements effectively assign
$messages = resources/en.xml/<messages>,
then $messages is used in the "localized-message" template -->
<xsl:param name="lang">message</xsl:param>
<xsl:variable name="messages"
select="document(concat('../xmlfiles/', $lang, '.xml'))/messages"/>
<xsl:template name="msg23" match="msg23">
<xsl:call-template name="localized-message">
<xsl:with-param name="msgcode">msg23</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="localized-message">
<xsl:param name="msgcode"/>
<!-- show message string -->
<xsl:message terminate="yes">
<xsl:value-of select="$messages/message[@name=$msgcode]"/>
</xsl:message>
</xsl:template>
</xsl:stylesheet>
说明:
<xsl:param name="lang">message</xsl:param>
这一行是声明了参数名,并给定值为:"message"字符串.
<xsl:variable name="messages"
select="document(concat('../xmlfiles/', $lang, '.xml'))/messages"/>
这一行也是定义了参数名,与上一行不同的是它用了上一行的值:"$lang",最终得到的值为:"document(../xmlfiles/message.xml)/messages".这两个变量为全局变量。
<!-- a-->
<xsl:template name="msg23" match="msg23">
<xsl:call-template name="localized-message">
<xsl:with-param name="msgcode">msg23</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- b -->
<xsl:template name="localized-message">
<xsl:param name="msgcode"/>
<!-- show message string -->
<xsl:message terminate="yes">
<xsl:value-of select="$messages/message[@name=$msgcode]"/>
</xsl:message>
</xsl:template>
上面两部份是紧密联系的(这里将他们分为a,b部分),a部份调
用了b部份,并且对b部分的参数"msgcode"进行了传值,也就是:
<xsl:with-param name="msgcode">msg23</xsl:with-param>
;
在b部份中的<xsl:param/>声明的变量为局部变量。引用了全局变量:"messages",读到这里,是不是有一种似曾相识的感觉?
html文件:
<html>
<head>
<script src="../js/commUtil.js"></script>
<script>
function parseXml() {
var xslDoc = commLoad("../xsl_files/message.xsl");
var xmlDoc = commLoad("../xmlfiles/message.xml");
var showStr = xmlDoc.documentElement.transformNode(xslDoc);
var divContent = document.getElementById("divContent");
divContent.innerHTML = showStr;
}
</script>
</head>
<body>
<div id="divContent"></div>
<input type="button" onclick="parseXml()" />
</body>
</html>
js代码:
/**
* @param url <xml>文档所在位置
* @return retDom xml的dom
* */
function commLoad(URL){
var retDom = null;
try{
retDom = new ActiveXObject('Microsoft.XMLDOM');
retDom.async = false;
retDom.load(URL);
}catch(e){
retDom = document.implementation.createDocument("", "", null);
retDom.async = false;
retDom.load(URL);
}
return retDom;
}
/**
* @param xml <xml>文档
* @return retDom xml的dom
* */
function commLoadXML(xml){
var retDom = null;
try{
retDom = new ActiveXObject('Microsoft.XMLDOM');
retDom.async = false;
retDom.loadXML(xml);
}catch(e){
var oParser = new DOMParser();
retDom = oParser.parseFromString(xml,"text/xml");
}
return retDom;
}
细心的人可以从html文件(代码)里得到三个folder。只要按照目录来做,并把html文件的绝对路径放到浏览器里(用浏览器访问该html文件)你将会看到这样的结果:
引用
Error 23: The drive is full.Error 42: The file is not found.
- 参考资料:Microsoft XML Core Services(MSXML)4.0
分享到:
相关推荐
<xsl:param name="testNgXslt.showRuntimeTotals"/> <xsl:param name="testNgXslt.reportTitle"/> <xsl:param name="testNgXslt.sortTestCaseLinks"/> <xsl:param name="testNgXslt.chartScaleFactor"/> ...
<xsl:param name="FromString"/> <xsl:param name="ToString"/> <xsl:choose> <xsl:when test="contains($SrcString, $FromString)"> <!-- 找到子字符串,先输出前面的部分 --> <xsl:value-of select=...
<xsl:param name="ctrlname"/> <xsl:element name="input"> <xsl:attribute name="name"><xsl:value-of select="$ctrlname"/></xsl:attribute> <xsl:attribute name="value"> <xsl:choose> <xsl:when test=...
8. `<xsl:param>` 和 `<xsl:with-param>` 元素:参数在XSLT中用于传递值。`<xsl:param>`定义参数,通常用于模板内部;而`<xsl:with-param>`用于向模板传递参数值。 ```xml <xsl:param name="paramName" select=...
<XSL:PARAM name="titleLength" /> 07. <XSL:PARAM name="hits" /> 08. <XSL:PARAM name="eliteLevel" /> 09. <XSL:PARAM name="linkOpenType" /> 10. <XSL:TEMPLATE match="/"> 11. <XSL:FOR-EACH select="/...
<param name="location">/path/to/xslt.xsl</param> </result> ``` 6. **httpheader**:自定义HTTP响应头。`status`属性用于设置HTTP状态码,`headers`属性可以设置响应头。 - **示例代码**: ```xml ...
7. `<xsl:variable>` 和 `<xsl:param>`:定义变量和参数,以便在转换过程中重用值。 以下是一个简单的XSLT示例,它将XML文档中的每个`<book>`元素转换为HTML列表项: ```xml <xsl:stylesheet version="1.0" xmlns:...
<xsl:param name="bdpTypeName"/> <xsl:param name="isDevice"/> <xsl:param name="isRight"/> <xsl:param name="showBtn"/> <!-- 匹配根节点 --> <xsl:template match="/"> <!-- 根据条件处理 --> ... ...
<xsl:with-param name="code" select="'1234567890'"/> <xsl:with-param name="type" select="'code128'"/> </xsl:call-template> </svg:svg> </fo:instream-foreign-object> </fo:block> ``` 然后在Java代码中...
<param name="testNgXslt.outputDir"expression="/path/to/your/output/directory/"/> <classpath refid="test.classpath"/> </xslt> </target> </project> 最后执行ant transform就可以了,之后在output目录下...
<Level name="地区" uniqueMembers="true" nameColumn="ORGENTITYNAME" column="ORGENTITYID" parentColumn="ORGENTITYPARENT" nullParentValue="null"> <Closure parentColumn="ORGENTITYPARENT" childColumn=...
在实际应用中,你可能还会遇到条件判断(`<xsl:if>`和`<xsl:choose>`)、循环(`<xsl:for-each>`)、变量(`<xsl:variable>`和`<xsl:param>`)以及导入和包含其他样式表(`<xsl:import>`和`<xsl:include>`)等功能。...
变量可以用`<xsl:variable>`声明,而参数用`<xsl:param>`声明。这在处理复杂的逻辑或需要重复使用的值时非常有用。 5. **条件语句和循环(Conditional Statements & Loops)**:XSLT支持条件语句(如`<xsl:if>`和`...
<xsl:param name="string"/> <xsl:param name="count"/> <xsl:choose> <xsl:when test="$count > 0"> <xsl:value-of select="$string"/> <xsl:call-template name="repeat"> <xsl:with-param name="string...
<param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter...
`<xsl:param>`定义参数,`<xsl:value-of select="avg($prices)"/>`则是使用函数计算平均值。 总的来说,XML技术涵盖了从基本的标记语言语法到复杂的文档转换和数据验证等多个方面,是IT开发者必备的知识之一。理解...
<xsl:with-param name="param1" select="'value1'"/> </xsl:call-template> </result> </xsl:template> </xsl:stylesheet> ``` 2. **JAXP(Java API for XML Processing)** - JAXP是Java标准API的一部分,...
除了基本的转换,XSL还支持条件判断(`<xsl:if>`)、循环(`<xsl:for-each>`)、变量(`<xsl:variable>`)和参数(`<xsl:param>`)等控制流结构,使得转换过程更加灵活。此外,XSLT 2.0及更高版本引入了更多高级功能...
<param expression="true" name="includeAll"/> </xslt> </target> ``` ##### 2. **定时执行与自动化** 通过上述配置,可以在每次构建过程中自动执行负载测试。为了进一步自动化,可以设置定时任务,例如每晚...