XSLT:用于剧本导入的嵌套for-each循环

时间:2019-03-03 00:07:23

标签: xml xslt filemaker

我制作了一个xslt以便在FileMaker中导入xml。

xml是我要导入的编剧,具有以下结构:

        <FinalDraft DocumentType="Script" Template="No" Version="3">
          <Content>
            <Paragraph Number="1" Type="Scene Heading">
              <SceneProperties Length="2/8" Page="1" Title="">
              </SceneProperties>
              <Text>Int. Containerhafen ContainerbrÜcke - tag </Text>
            </Paragraph>
            <Paragraph Type="Action">
              <Text>Der Mann zündet sich eine Zigarette an und marschiert über das Terminal. Hafenarbeiter, die ihn passieren, grüßen respektvoll. Plötzlich klingelt sein Telefon. Der Mann bleibt stehen. Er zögert. Das Telefon klingelt weiter. Schließlich hebt er ab.</Text>
            </Paragraph>
            <Paragraph Type="Character">
              <Text>Mann</Text>
            </Paragraph>
            <Paragraph Type="Dialogue">
              <Text>Ja?</Text>
            </Paragraph>
            <Paragraph Type="Action">
              <Text>Der Mann zündet sich eine Zigarette an und marschiert über das Terminal. Hafenarbeiter, die ihn passieren, grüßen respektvoll. Plötzlich klingelt sein Telefon. Der Mann bleibt stehen. Er zögert. Das Telefon klingelt weiter. Schließlich hebt er ab.</Text>
            </Paragraph>
            <Paragraph Type="Character">
              <Text>Mann</Text>
            </Paragraph>
            <Paragraph Type="Dialogue">
              <Text>Ja?</Text>
            </Paragraph>
        </Content>
        </FinalDraft>

对于剧本中的每个场景,带有“动作,角色,对话”段落的“场景标题”段落都是非常重复的。

我尝试在Filemaker中导入很多信息,每个场景都是一行:场景编号,场景长度,场景标题文本等。现在我也想在一个字段中将场景的每个信息都导入到一个字段中:场景标题,动作,角色,对话。”场景标题没问题,但是“动作,角色,对话”经常重复,所以我需要第二个“ for-each”,但是我对路径有疑问,如果这是正确的方法,我不是吗?

这是XSLT,问题部分在最后一列“ Szeneninhalt”的最后。我用“ ???”标记了路径这是一个html代码,因为我在FileMaker中需要它。

 <RESULTSET>
        <xsl:for-each select="FinalDraft/Content/Paragraph[@Type='Scene Heading']">
        <ROW>
            <!-- Szenennummer
            -->
            <COL>
                <DATA>
                    <xsl:value-of select="@Number"/></DATA>
            </COL>
            <!-- Szenenlaenge
            -->
             <COL>
                <DATA>
                    <xsl:value-of select="SceneProperties/@Length"/></DATA>
            </COL>
            <!-- Szenenbezeichnung
            -->
             <COL>
                <DATA><!--
                    <xsl:variable name="Szene" select="Text"/>
                    <xsl:value-of select="replace('$Szene', 'Ext.', '123')" />
                    -->
                    <xsl:value-of select="Text"/>

                 </DATA>

            </COL>
            <!-- Szenensynopsis
            -->
         <COL>
                <DATA>
                    <xsl:value-of select="following-sibling::Paragraph[@Type='Action']/Text"/></DATA>
            </COL>
             <!-- Drehbuchname
            -->
         <COL>
                <DATA>
                    Drehbuch Ersatzname
                    </DATA>
            </COL>
                  <!-- ExtInt
            -->
         <COL>
                <DATA>
                <xsl:if test="contains(Text, 'Ext.')">
                    <p>Ext.</p>
                    </xsl:if>
                    <xsl:if test="contains(Text, 'Int.')">
                        <p>Int.</p>
                    </xsl:if>
                    </DATA>
            </COL>
                             <!-- TagNacht
            -->
         <COL>
                <DATA>
                <xsl:if test="contains(Text, 'tag')">
                    <p>Tag</p>
                    </xsl:if>
                    <xsl:if test="contains(Text, 'nacht')">
                        <p>Nacht</p>
                    </xsl:if>
                    </DATA>
            </COL>
            <!-- Szeneninhalt
            -->
         <COL>
                <DATA>
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body&gt;
                    &lt;ul class="screenbox"&gt;
                    &lt;li class="scenenumber"&gt;<xsl:value-of select="@Number"/>&lt;/li&gt;
                    &lt;li class="sceneheader"&gt;<xsl:value-of select="Text"/>&lt;/li&gt;

                    <xsl:for-each select=" ??? ">

                    &lt;li class="action"&gt;<xsl:value-of select=" ??? "/>&lt;/li&gt;
<!--
                        &lt;li class="character"&gt;<xsl:value-of select=" ??? "/>&lt;/li&gt;
                    &lt;li class="dialogue"&gt;<xsl:value-of select=" ??? "/>&lt;/li&gt;
-->                    
                    </xsl:for-each>       
                    &lt;/ul&gt;       
&lt;/body&gt;
&lt;/html&gt;
             </DATA>
            </COL>
        </ROW></xsl:for-each>

    </RESULTSET>

谢谢您的帮助!

0 个答案:

没有答案