当前位置: 首页 > 知识库问答 >
问题:

如何在不同类型(“基于模块”)上使用XSLT模板?

金霄
2023-03-14

我正在使用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个不同的样式表,并且这些样式表中的模板具有相同的名称,我认为会有麻烦。

--编辑

根据一条评论,我写了以下代码,但我无法使用:

测量模板。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结构一起使用。

共有1个答案

孟洋
2023-03-14

您的代码基本上很好,但您没有在MatrixRadio中调用模板,因此它不会发生。对ViewTemplate模板的一个小更改:

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

而且效果很好

 类似资料:
  • 3. 我不想在我的API中传递所有的参数作为请求体,有些只有查询、变量、输入有些只有查询和变量,就像上面的json数据,我想创建相同的模型,可以在其余的API中使用。目前,我已经为每个API创建了不同的模型。 公共类CreatetRequest{ } 这里我在所有API中复制了我的模型,所以我想创建三个模型类,其中包含所有必需的变量,这些变量在我的引导应用程序中都是常见的,但同时我必须避免在res

  • 我正在寻找如何根据XML文件中的参数将模板应用于XML文件。 XML文件具有以下格式: XML文件由另一个程序生成,需要特定的输出格式,具体取决于参数“outt-type”的值。如果必须同时为多个输出生成结果,则此参数可能会出现多次,因此需要一个循环。 以下是一个具有多个输出类型参数的示例: 我想创建一个主模板文件。xsl,并在文件中导入/包括其他模板文件(generate-type-1.xsl、

  • 我有一个XML,我必须循环测试结果和组件。当组件的类型与特定名称匹配时,我必须对该组件应用不同的模板。我为每种组件类型创建了一个XSL-to,具有不同的模板,例如:NORMALTEXTBOX。但是这些模板并没有被应用到组件块中。。。谁能帮我一下吗? XML XSL

  • 除了默认的 javascript 模块,还有 css、html 以及资源模块。 coolie.js 默认就支持js、html、css、file、text和json六中模块类型。 并且支持模块类型出口定义,如html模块出口为一个 url,或者一个image模块出口为 base64。 使用方法: require(modulePath[, modulePipeline]); modulePath:模

  • 我们已经讲到了如何使用模块名称作为调用的一部分,来调用模块中的函数,如示例 7-7 中所示的 nested_modules 函数调用。 文件名: src/main.rs 示例 7-7:通过完全指定模块中的路径来调用函数 如你所见,指定函数的完全限定名称可能会非常冗长。所幸 Rust 有一个关键字使得这些调用显得更简洁。 Rust 的 use 关键字能将你想要调用的函数所在的模块引入到当前作用域中,

  • 我正在尝试为封装在父元素中但具有不同元素名称的元素使用应用模板。在我的示例中,我想将其应用于元素,并选择其中任何一个具有值。此任务是我问的另一个问题的延续。我使用以下XML 我正在使用java应用以下XSLT 1.0。在上面的示例中,我希望模板应用于firstName和lastName,但在firstName中显示值,因为它是第一个有值的。 Java代码是Oracle tuorial页面示例中的S