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" />
テンプレートには、質問、行、および列をどのようにフォーマットするかの定義が含まれています。同じページに異なるタイプの質問がある場合、各タイプの質問、行、および列を定義する 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構造で使用しています。