我正在使用XML來構建調查。 A(矩陣)問題的調查中,列和行看起來是這樣的:如何使用不同類型的XSLT模板(「基於模塊」)?
<?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" />
而且模板中包含的問題怎麼樣,行和列的格式應該定義。如果在同一頁面上存在不同類型的問題,那麼是否會出現干擾,因爲定義每種類型的問題,行和列的XSLT模板會相互覆蓋?
就我所知,當你使用xsl:include時,它會從樣式表中獲取內容並將其放入當前。如果我需要使用4個不同的樣式表,並且這些樣式表中的模板具有相同的名稱,我認爲會有麻煩。
- 編輯
根據評論我寫了下面的代碼,我不能讓工作:
SurveyTemplate.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結構。
可以包括所有的樣式表,並簡單地讓它們只匹配特定類型的問題:'的 ...' –
Torious
2012-04-18 13:37:13
酷我會試試這個,回到你身邊:) – Kenci 2012-04-18 19:42:29
我試過你的建議,但我不能得到它的工作。你能否看看我編輯的問題? – Kenci 2012-04-19 09:49:53