我正在使用 XML 来构建调查。调查中的一个(矩阵)问题,具有列和行,如下所示:
<?xml version= "1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="SurveyTemplate.xsl"?>
<Survey>
<id>1</id>
<title>Spørgeskema</title>
<ViewList>
<View>
<id>1</id>
<parrent_id>null</parrent_id>
<order>1</order>
<title>Dette er titlen på den første side / kategori</title>
<QuestionList>
<Question>
<id>1</id>
<visible>false</visible>
<order>1</order>
<classname>matrixradio</classname>
<type>MatrixRadio</type>
<wording>Dette er et spørgsmål</wording>
<helptext>Dette er en hjælpetekst, som kan hjælpe respondenten med at forstå spørgsmålet</helptext>
<RowList>
<Row>
<id>412</id>
<order>1</order>
<visible>true</visible>
<css_class_name>Hvis man har lyst til at formatere den r�kke p� en speciel m�de</css_class_name>
<helptext>Dette er en hjælpetekst, der kan hjælpe respondenten med at forstå hvad denne række betyder</helptext>
<title>Dette er titlen på den første række</title>
<ColumnList>
<Column>
<id>3421</id>
<visible>true</visible>
<order>1</order>
<title>Dette er titlen på den første kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>false</value>
</Column>
<Column>
<id>123</id>
<visible>true</visible>
<order>2</order>
<title>Dette er titlen på den anden kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>true</value>
</Column>
<Column>
<id>444</id>
<visible>true</visible>
<order>1</order>
<title>Dette er titlen på den tredje kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>false</value>
</Column>
<Column>
<id>222</id>
<visible>true</visible>
<order>1</order>
<title>Dette er titlen på den fjerde kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>false</value>
</Column>
</ColumnList>
</Row>
<Row>
<id>555</id>
<order>2</order>
<visible>true</visible>
<css_class_name>Hvis man har lyst til at formatere den række på en speciel måde</css_class_name>
<helptext>Dette er en hjælpetekst, der kan hjælpe respondenten med at forstå hvad denne række betyder</helptext>
<title>Dette er titlen på den anden række</title>
<ColumnList>
<Column>
<id>3421</id>
<visible>true</visible>
<order>1</order>
<title>Dette er titlen på den første kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>true</value>
</Column>
<Column>
<id>123</id>
<visible>true</visible>
<order>2</order>
<title>Dette er titlen på den anden kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>false</value>
</Column>
<Column>
<id>444</id>
<visible>true</visible>
<order>1</order>
<title>Dette er titlen på den tredje kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>false</value>
</Column>
<Column>
<id>222</id>
<visible>true</visible>
<order>1</order>
<title>Dette er titlen på den fjerde kolonne</title>
<helptext>Hjælpetekst, der hjælper brugeren med at forstå denne kolonne</helptext>
<value>false</value>
</Column>
</ColumnList>
</Row>
</RowList>
</Question>
<Question>
<id>412</id>
<visible>true</visible>
<order>2</order>
<type>Matrix</type>
<wording>Dette er også et spørgsmål</wording>
<helptext>Dette er en hjælpetekst, som kan hjælpe respondenten med at forstå spørgsmålet</helptext>
</Question>
</QuestionList>
</View>
<View>
<id>2</id>
<parrent_id>null</parrent_id>
<order>1</order>
<title>Moo</title>
</View>
</ViewList>
</Survey>
我想使用不同的 XSLT 模板,具体取决于
<type>MatrixRadio</type>
节点。因此,即使所有问题都以相同的方式构建,它们看起来也可能不同。我会为每种问题类型使用不同的 .XSLT 文件,它定义了问题、列和行的外观。
如果我使用以下代码包含“模块/模板”:
<xsl:include href="MatrixRadio.xslt" />
该模板包含有关如何格式化问题、行和列的定义。如果同一页面上有不同类型的问题,会不会产生干扰,因为定义每种类型的 Question、Row 和 Column 的 XSLT 模板会相互覆盖?
据我所知,当您使用 xsl:include - 它从样式表中获取内容并将其放入当前。如果我需要使用 4 个不同的样式表,并且这些样式表中的模板具有相同的名称,我认为会有麻烦。
- 编辑
根据评论,我编写了以下代码,但我无法开始工作:
调查模板.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="MatrixRadio.xslt" />
<xsl:template match="/">
<html>
<body>
<h2>XSLT-Test template</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="ViewList">
<p>
<xsl:for-each select="View">
<xsl:call-template name="ViewTemplate">
</xsl:call-template>
</xsl:for-each>
</p>
</xsl:template>
<xsl:template name="ViewTemplate">
<p>
<xsl:value-of select="title"/>
</p>
</xsl:template>
</xsl:stylesheet>
和
MatrixRadio.xslt
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Question[type = 'MatrixRadio']">
<div>
<xsl:attribute name="class">
<xsl:value-of select="classname"/>
</xsl:attribute>
<b>
<xsl:value-of select="order"/> . <xsl:value-of select="wording"/>
</b>
</div>
</xsl:template>
</xsl:stylesheet>
未处理 MatrixRadio.xslt 模板。我将它与我在上面发布的 XML 结构一起使用。