0

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構造で使用しています。

4

1 に答える 1

0

コードはほとんど問題ありませんが、MatrixRadio でテンプレートを呼び出していないため、発生していません。ViewTemplate テンプレートに 1 つの小さな変更を加えます。

<xsl:template name="ViewTemplate">
    <p>
        <xsl:value-of select="title"/>
    </p>
    <xsl:apply-templates select="QuestionList"/>    
</xsl:template>

そしてそれはうまくいきます

于 2012-04-23T08:24:17.053 に答える