在兄弟节点中的嵌套项之间移动的最佳方法是什么?

时间:2015-09-19 13:17:22

标签: xml xslt tei

我有一个问题,我确信其实很容易回答,但我无法弄明白,我以前尝试询问它的过程非常复杂。

我有一个从TEI XML生成的页面,其中有一些文本与图像文件相关联:

<sourceDoc xml:id="textContent">
    <surfaceGrp xml:id="wall" n="West Wall">
        <surface xml:id="EETS.QD.60">
            <label>Verse 60</label>
            <graphic url="ww_test_1.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.63">
            <label>Verse 63</label>
            <graphic url="ww_test_2.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.65">
            <label>Verse 65</label>
            <graphic url="ww_test_3.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.66">
            <label>Verse 66</label>
            <graphic url="ww_test_4.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.68">
            <label>Verse 68</label>
            <graphic url="ww_test_5.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.69">
            <label>Verse 69</label>
            <graphic url="ww_test_6.jpg"/>
        </surface>
    </surfaceGrp>
</sourceDoc>

(我已经删除了此处示例中的文字,以避免额外的瑕疵)

我根据与每段文字相关联的图像的缩略图生成页面顶部的标题。所以www_test_1-thumbnail.jpg等使用以下xsl我可以正确显示标题(tei是tei命名空间,可以在xmlns:tei="http://www.tei-c.org/ns/1.0"声明):

<xsl:template match="tei:surface">
    <div id="centerMenu">
        <xsl:apply-templates select="tei:graphic" mode="list"/>
    </div>
</xsl:template>

<xsl:template match="tei:graphic" mode="list">
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link">
            <xsl:attribute name="href">
                <xsl:value-of select="concat(substring(@url,1,string-length(@url)-4),'.html')"/>
            </xsl:attribute>
            <img class="thumbnail">
                <xsl:attribute name="src">
                    <xsl:value-of
                        select="concat(substring(@url,1,string-length(@url)-4),'-thumbnail.jpg')"
                    />
                </xsl:attribute>
                <xsl:attribute name="alt">
                    <xsl:value-of select="../tei:label"/>
                </xsl:attribute>
            </img>
        </a>
    </span>
</xsl:template>

我的问题是,有时我需要从一个<surfaceGrp> - 包裹的元素集跳转到另一个元素。因此,例如,如果有一个&#34;南墙&#34; <surfaceGrp>我需要能够获取即将发布的元素的网址,以便我可以跳转到下一个缩略图图像块:

<sourceDoc xml:id="textContent">
    <surfaceGrp xml:id="wall" n="West Wall">
        <surface xml:id="EETS.QD.60">
            <label>Verse 60</label>
            <graphic url="ww_test_1.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.63">
            <label>Verse 63</label>
            <graphic url="ww_test_2.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.65">
            <label>Verse 65</label>
            <graphic url="ww_test_3.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.66">
            <label>Verse 66</label>
            <graphic url="ww_test_4.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.68">
            <label>Verse 68</label>
            <graphic url="ww_test_5.jpg"/>
        </surface>
        <surface xml:id="EETS.QD.69">
            <label>Verse 69</label>
            <graphic url="ww_test_6.jpg"/>
        </surface>
    </surfaceGrp>
    <surfaceGrp xml:id="wall" n="South Wall">
        <surface xml:id="EETS.QD.70">
            <label>Verse 70</label>
            <graphic url="sw_test_1.jpg"/>
        </surface>
    </surfaceGrp>
</sourceDoc>

让事情变得更复杂的是,有些时候必须将所有内容都包含在另一个<surfaceGrp>元素中,因为它们是一个更大的块,它们是其中的一部分。这可能是这样的:

<sourceDoc xml:id="textContent">
<surfaceGrp xml:id="g.8" n="gathering">
    <surfaceGrp xml:id="f.66" n="folio">
        <surface n="recto">
            <label>Verse 60</label>
            <graphic url="pageimage1.jpg"/>
        </surface>
        <surface n="verso">
            <label>Verse 63</label>
            <graphic url="pageimage2.jpg"/>
        </surface>
    </surfaceGrp>
    <surfaceGrp xml:id="f.67" n="folio>
        <surface n="recto">
            <label>Verse 65</label>
            <graphic url="pageimage3.jpg"/>
        </surface>
        <surface n="verso">
            <label>Verse 66</label>
            <graphic url="pageimage4.jpg"/>
        </surface>
    </surfaceGrp>
</surfaceGrp>
<surfaceGrp xml:id="g.9" n="gathering">
    <surfaceGrp xml:id="f.67" n="folio>
        <surface n="recto">
            <label>Verse 68</label>
            <graphic url="pageimage5.jpg"/>
        </surface>
        <surface n="verso">
            <label>Verse 69</label>
            <graphic url="pageimage6.jpg"/>
       </surface>
    </surfaceGrp>
</surfaceGrp>
</sourceDoc>

所以我的问题有两个:

  1. 如何让我的xsl显示第一个<surfaceGrp>树中的所有内容?我当前的代码将显示孩子<surfaceGrp>的两个表面,但不是所有内容。
  2. 在上面的例子中,我如何生成从第66节到第68节的链接,它是否与从第65节到第66节的链接有根本的不同?我可以使用一些复杂的代码跳转到下一个项目和下一个<surfaceGrp>,但这是一个令人难以置信的错误解决方案,并且在添加第二个<surfaceGrp>图层后完全中断。如果有标准的解决方案,我会欣赏正确的方向。
  3. xsl当前使用我的代码生成的html代码如下:

    <div id="centerMenu">
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link" href="ww_test_1.html">
            <img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_1-thumbnail.jpg" alt="First Panel" />
        </a>
    </span>
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link" href="ww_test_2.html">
            <img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_2-thumbnail.jpg" alt="Second Panel" />
        </a>
    </span>
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link" href="ww_test_3.html">
            <img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_3-thumbnail.jpg" alt="Third Panel" />
        </a>
    </span>
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link" href="ww_test_4.html">
            <img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_4-thumbnail.jpg" alt="Fourth Panel" />
        </a>
    </span>
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link" href="ww_test_5.html">
            <img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_5-thumbnail.jpg" alt="Fifth Panel" />
        </a>
    </span>
    <span class="menuitem" id="image_thumbnail">
        <a class="nav_link" href="ww_test_6.html">
            <img class="thumbnail" src="../../Quis_Dabit/Clopton/Thumbnails/ww_test_6-thumbnail.jpg" alt="Sixth Panel" />
        </a>
    </span>
    </div>
    
    <div id="rightMenu">
        <span class="menuitem" id="previousItem">
            <a class="nav_link">Previous</a>
        </span>
        <span class="menuitem" id="nextItem">
            <a class="nav_link" href="ww_test_2.html">Next</a>
        </span>
    </div>
    

0 个答案:

没有答案