我有一个XML,我必须循环测试结果和组件。当组件的类型与特定名称匹配时,我必须对该组件应用不同的模板。我为每种组件类型创建了一个XSL-to,具有不同的模板,例如:NORMALTEXTBOX。但是这些模板并没有被应用到组件块中。。。谁能帮我一下吗?
XML
<Report>
<Test_Results>
<Test_Result TestID="1" TestName="sampleTest" >
<Component Type="NORMALTEXTBOX">
<ComponentName>Component1</ComponentName>
<ComponentId></ComponentId>
<Method></Method>
<Results></Results>
</Component>
<Component Type="NUMERICTEXTBOX">
<ComponentName>Component2</ComponentName>
<ComponentId></ComponentId>
<Method></Method>
<Results></Results>
</Component>
</Test_Result>
<Test_Result TestID="1" TestName="">
<Component Type="NORMALTEXTBOX">
<ComponentName></ComponentName>
<ComponentId></ComponentId>
<Method></Method>
<Results></Results>
</Component>
</Test_Result>
</Test_Results>
</Report>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="Report/Test_Results"/>
</body>
</html>
</xsl:template>
<xsl:template match="Test_Results">
<xsl:for-each select="Test_Result">
<xsl:for-each select="Component">
<xsl:choose>
<xsl:when test="@Type = 'NORMALTEXTBOX'">
<xsl:apply-templates select="Component" mode="normaltext"/>
</xsl:when>
<xsl:when test="@Type = 'NUMERICTEXTBOX'">
<xsl:apply-templates select="Component" mode="numerictext"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template match="Component" mode="normaltext">
<h1> different styles to be applied, only some values of component will be taken</h1>
</xsl:template>
<xsl:template match="Component" mode="numerictext">
<h1>different styles to be applied, only some values of component will be taken</h1>
</xsl:template>
</xsl:stylesheet>
我已经明白了......而不是应用模板,我尝试了下面的方法,它应用了该功能组件的模板。
<xsl:call-template name="NORMALTEXTBOX">
由于xsl:choose中的上下文节点是Component,因此xsl:apply-template的select表达式应该是current():
<xsl:choose>
<xsl:when test="@Type = 'NORMALTEXTBOX'">
<xsl:apply-templates select="." mode="normaltext"/>
</xsl:when>
<xsl:when test="@Type = 'NUMERICTEXTBOX'">
<xsl:apply-templates select="." mode="numerictext"/>
</xsl:when>
</xsl:choose>
但是,更好的方法是只在模板匹配中包含类型条件,如下所示:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="Report/Test_Results"/>
</body>
</html>
</xsl:template>
<xsl:template match="Test_Results">
<xsl:for-each select="Test_Result">
<xsl:apply-templates select="Component"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="Component[@Type = 'NORMALTEXTBOX']">
<h1> different styles to be applied, only some values of component will be taken</h1>
</xsl:template>
<xsl:template match="Component[@Type = 'NUMERICTEXTBOX']">
<h1>different styles to be applied, only some values of component will be taken</h1>
</xsl:template>
</xsl:stylesheet>
我有以下xml文件结构: 我的目标是借助xslt文件生成html输出。在这样做的过程中,我想应用一个模板来指导根元素的子元素,该元素将标记的名称输出为标题1,其内容包含在 为了更容易理解我想要的是HTML输出的示例: 现在,我的尝试如下所示:http://pastebin.com/wKgSLbcE 但它不适用于
我正在寻找如何根据XML文件中的参数将模板应用于XML文件。 XML文件具有以下格式: XML文件由另一个程序生成,需要特定的输出格式,具体取决于参数“outt-type”的值。如果必须同时为多个输出生成结果,则此参数可能会出现多次,因此需要一个循环。 以下是一个具有多个输出类型参数的示例: 我想创建一个主模板文件。xsl,并在文件中导入/包括其他模板文件(generate-type-1.xsl、
如果我们说为特定节点应用模板,那么它将应用于整个xml中,无论它在哪里找到该节点/标记。 我的问题是我有一个xml,我需要根据条件应用模板,基本上保持一些秩序。 输入xml: 输出应为, 我的XSLT是这样的, 需要根据以下条件重新构造XSL, 我只想在注释不是作为表的前兄弟或后兄弟出现时应用注释模板。如果它在表的后面或前面,那么它应该位于表之间、表的下面或上面,就像在输出中一样。 谢啦
我正在使用XML构建调查。调查中的一个(矩阵)问题,具有列和行,如下所示: 我想使用不同的XSLT模板,这取决于 节点。因此,尽管所有问题都是以相同的方式构建的,但它们看起来可能不同。我想用不同的。每个问题类型的XSLT文件,定义问题、列和行的外观。 如果我使用以下代码包括“模块/模板”: 该模板包含问题、行和列的格式定义。如果同一页面上有不同类型的问题,会不会出现干扰,因为定义每种类型的问题、行
根据xslt中的变量应用模板的最佳方法是什么?变量将通过java脚本代码更改。我已经阅读了xslt v 2.0中的函数,但答案解释得不是很好,也不符合我的要求 我尝试了下一个: 我创建了一个全局变量 然后像这样应用 然后像这样匹配 但没有显示任何内容。
问题内容: 我有一个非常基本的模板(basic_template.html),并希望使用使用另一部分模板格式化的数据来填写。basic_template.html可能包含使用部分模板格式化的几件事。 我应该如何在views.py中构建代码? 我这样做的原因是稍后将使用Ajax填充。我这样做对吗? 问题答案: 你可以做: 另一个Django模板在哪里。在这里,你可以放入将用Ajax获得的HTML。