XSLT: вложенный цикл для каждого импорта сценария - PullRequest
0 голосов
/ 03 марта 2019

Я сделал xslt для импорта xml в FileMaker.

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, каждая сцена - это одна строка: Scenenumber, Scene Length, SceneТекст заголовка и т. Д. И теперь я также хочу импортировать в одно поле каждую информацию сцены в единицах: «Заголовок сцены, Действие, Персонаж, Диалог».Заголовок сцены не проблема, но «Действие, Характер, Диалог» повторяется часто, поэтому мне нужен второй «для каждого», но у меня есть Проблема с путем, и я не вижу, если это правильный путь?

Это 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>

Спасибо за любую помощь!

...