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" />

该模板包含有关如何格式化问题、行和列的定义。如果同一页面上有不同类型的问题,会不会产生干扰,因为定义每种类型的 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 结构一起使用。

4

1 回答 1

0

您的代码大部分都很好,但是您没有在 MatrixRadio 中调用模板,所以它没有发生。ViewTemplate 模板的一个小改动:

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

它工作正常

于 2012-04-23T08:24:17.053 回答