2012-04-18 7 views
0

私はXMLを使ってアンケートを作成しています。列と行との調査で(マトリックス)の質問には、次のようになります。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> 

私は

<type>MatrixRadio</type> 

ノードに応じて、異なるXSLTテンプレートを使用したいと思います。したがって、すべての質問が同じように構築されていても、それらは異なって見える可能性があります。 質問、列、および行の表示方法を定義する、各質問タイプごとに異なる.XSLTファイルを使用します。

i「は、モジュール/テンプレート」を含めるために、次のコードを使用している場合:

<xsl:include href="MatrixRadio.xslt" /> 

そしてテンプレートは質問、行と列の書式設定方法の定義が含まれています。同じページに異なるタイプの質問がある場合は、それぞれのタイプの質問、行、列を定義するXSLTテンプレートが互いにオーバーライドするため、インペクションはありませんか?

私が読んだ限り、xsl:includeを使用すると、スタイルシートからコンテンツが取り込まれ、現在の状態になります。 4つの異なるスタイルシートを使用する必要があり、それらのスタイルシート内のテンプレートが同じ名前を持つ場合は、問題が発生すると思います。

- EDIT

私は仕事を得るカント次のコードを、書かれているコメントによると:

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

+0

正常に動作します: 'ます。 ...' – Torious

+0

クール私はこれを試して、あなたに戻ってくる:) – Kenci

+0

私はあなたの提案を試みたが、私はそれを動作させることができません。おそらく私の編集した質問を見ることができますか? – Kenci

答えて

0

あなたのコードは大体は問題ありませんが、MatrixRadioでテンプレートを呼び出さないので、それは起こっていません。あなたのViewTemplateテンプレートに対する一つの小さな変更:

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

、それはあなたがすべてのあなたのスタイルシートを含めて、単に彼らがその特定のタイプの質問だけ一致させることができます

関連する問題