通过XSLT检索XML元素的值

时间:2018-03-14 15:13:05

标签: xml xslt

我正在研究一个用XML语言标记的旧文本。我想在书中获得正确的名称和他们的确切位置。我得到了对开页(@pb),章节(@ div2),列(@cb),但我无法得到行号( @lb )。它返回一个与实线不对应的数字(31)。我不知道是不是因为路线失败了。我该如何解决? 以下是样式表XSLT和我创建的XML:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
    xmlns:tei="http://www.tei-c.org/ns/1.0">
    <xsl:output method="html"/>
    <xsl:template match="/">
        <html lang="es">
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            </head>
            <body>
                <h3 align="center">
                    <b>Antropónimos</b>
                </h3>
                <table width="750" border="1" align="center">
                    <tr>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Nombre</div>
                        </th>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Libro</div>
                        </th>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Capítulo</div>
                        </th>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Folio</div>
                        </th>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Columna</div>
                        </th>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Línea</div>
                        </th>
                    </tr>

                    <tr>

                        <td>
                            <xsl:for-each select="//tei:div1//tei:name">
                                <div align="center">
                                    <xsl:value-of select="."/>
                                </div>
                            </xsl:for-each>
                        </td>
                        <td>
                            <xsl:for-each select="//tei:div1//tei:name">
                                <div align="center">
                                    <xsl:value-of select="ancestor::tei:div1/@n"/>
                                </div>
                            </xsl:for-each>
                        </td>
                        <td>
                            <xsl:for-each select="//tei:div1//tei:name">
                                <div align="center">
                                    <xsl:value-of select="ancestor::tei:div2/@n"/>
                                </div>
                            </xsl:for-each>
                        </td>
                        <td>
                            <xsl:for-each select="//tei:div1//tei:name">
                                <div align="center">
                                    <xsl:value-of select="ancestor::tei:div2//tei:pb/@n"/>
                                </div>
                            </xsl:for-each>
                        </td>
                        <td>
                            <xsl:for-each select="//tei:div1//tei:name">
                                <div align="center">
                                    <xsl:value-of select="ancestor::tei:div2//tei:cb/@n"/>
                                </div>
                            </xsl:for-each>
                        </td>
                        <td>
                            <xsl:for-each select="//tei:div1//tei:name">
                                <div align="center">
                                    <xsl:value-of select="ancestor::tei:div2//tei:lb/@n"/>
                                </div>
                            </xsl:for-each>
                        </td>
                    </tr>
                </table>
            </body>
        </html>

    </xsl:template>



</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
	schematypens="http://purl.oclc.org/dsdl/schematron"?>
<?xml-stylesheet type="text/xsl" href="1.antroponimos_prueba.xsl"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>Title</title>
      </titleStmt>
      <publicationStmt>
        <p>Publication Information</p>
      </publicationStmt>
      <sourceDesc>
        <p>Information about the source</p>
      </sourceDesc>
    </fileDesc>
  </teiHeader>
  <text>
    <body>
      <div1 type="book" n="01">
        <div2 type="chapter" n="001">
          <pb n="001r"/>
          <cb n="b"/>
          <head>
            <hi rend="red">Delas obras que <name type="Antropónimo">dios</name> fizo en los prime<lb
                n="31"/>ros <num><pc>.</pc>vj<pc>.</pc></num> dias<pc>.</pc></hi>
          </head>
          <ab><add place="margin">I</add>
            <phr function="time">Quando nuestro sennor <lb n="32"/><name type="Antropónimo"
                >dios</name> crio enel comienço <phr type="syntagm" function="copulative">el
                  çielo<lb n="33"/>et la tierra &amp; todas las cosas <phr function="adjetive"
                  type="restrictive">que<lb n="34"/>enellos son</phr></phr></phr><pc>.</pc>
            <phr function="inciso" type="source" n="moysen">segund quelo cuenta <name
                type="Antropónimo">moysen</name>
              <phr function="adjetive" type="restrictive">que fue<lb n="35"/><phr type="syntagm"
                  function="copulative"><phr type="syntagm" function="copulative" n="1">santo</phr>
                  &amp; <phr type="syntagm" function="copulative" n="2"
                >sabio</phr></phr></phr><pc>.</pc> &amp; otros muchos <phr function="adjetive"
                type="restrictive">que acordaron con el</phr></phr><pc>.</pc>
            <lb n="36"/>departiolo &amp; fizo lo todo en seys dias <phr function="cataphoric"
                >desta<lb n="37"/>guisa</phr><pc>.</pc>
            <phr function="list">¶ <phr function="list" n="1">El primero dia crio <phr
                  type="syntagm" function="copulative"><phr type="syntagm" function="copulative"
                    n="1">la luz</phr><pc>.</pc> &amp; <phr type="syntagm" function="copulative"
                    n="2">todas<lb n="38"/>las naturas delos angeles buenos et malos<pc>.</pc><lb
                      n="39"/><phr function="adjetive" type="explanatory">que son las criaturas
                      spiritales</phr></phr></phr></phr><pc>.</pc> ¶ Et partio<lb n="40"/>esse dia
              la luz delas tiniebras<pc>.</pc> Et <phr type="coord" function="copulative">ala luz<lb
                  n="41"/>
                <pb n="001v"/>
                <cb n="a"/><lb n="1"/> llamo dia<pc>.</pc> &amp; alas tiniebras
                noche</phr><pc>.</pc> ¶ <phr function="list" n="1">El<lb n="2"/> segundo dia <phr
                  type="coord" function="copulative">fizo el firmamento<pc>.</pc> &amp; partio con
                    el<lb n="3"/> las aguas de suso delas de deyuso</phr></phr><pc>.</pc> ¶ <phr
                function="list" n="4">El terce<lb n="3"/>ro dia ayunto todas las aguas <phr
                  function="adjetive" type="restrictive">que so el çielo<lb n="5"/> son<pc>.</pc>
                  <phr function="explicative"><phr type="syntagm" function="copulative">los mares
                      &amp; las otras aguas dulces</phr><pc>.</pc>
                    <phr function="explicative"><phr type="syntagm" function="copulative">de<lb
                          n="6"/> rios &amp; de fuentes</phr></phr></phr></phr><pc>.</pc> &amp; <phr
                  function="time">quando las aguas fueron <phr type="syntagm" function="copulative"
                      >a<lb n="7"/>partadas &amp; <phr type="syntagm" function="copulative" n="1"
                      >ayuntadas en un logar</phr></phr><pc>.</pc> paresçio<lb n="8"/> lo seco que
                  es dicho tierra<pc>.</pc> Et crio estonçes <name type="Antropónimo">dios</name>
                    en<lb n="9"/> la tierra <phr type="syntagm" function="copulative">las yeruas
                    &amp; los aruoles de todas<lb n="10"/> naturas</phr></phr><pc>.</pc> ¶ <phr
                  function="list" n="4">El quarto alumbro <phr type="syntagm" function="copulative"
                    >los çielos &amp; la ti<lb n="11"/>erra</phr>
                  <phr type="syntagm" function="copulative">con el sol &amp; con la luna &amp; con
                    las estrellas</phr><pc>.</pc><lb n="12"/> &amp; puso las enel
                    firmamento<pc>.</pc>
                  <phr type="coord" function="copulative">El sol pora el dia<pc>.</pc><lb n="13"/>
                    &amp; la luna &amp; las estrellas pora la noche</phr></phr><pc>.</pc> ¶ <phr
                  function="list" n="5">El<lb n="14"/> quinto dia fizo <phr type="syntagm"
                    function="copulative">los peçes &amp; las aues de todas<lb n="15"/>
                    maneras</phr><pc>.</pc> Et <phr type="coord" function="copulative">bendixo los
                    &amp; dixo que <phr type="coord" function="copulative">creçiessen<lb n="16"/>
                      &amp; amuchiguassen<pc>.</pc> &amp; enchiessen <phr type="syntagm"
                        function="copulative">las aguas<lb n="17"/> &amp; la
                    tierra</phr></phr></phr></phr><pc>.</pc> ¶ El sexto dia crio <phr type="syntagm"
                  function="copulative">las bestias<lb n="18"/> grandes &amp; las pequennas de todas
                  naturas</phr></phr><pc>.</pc></phr> ¶ Et<lb n="19"/> esse dia mesmo formo all omne
              <phr type="syntagm" function="copulative">a su yma<lb n="20"/> gen &amp; asu
              semeiança</phr> que fuesse adelantado &amp; se<lb n="21"/>nnor de todas las otras
            criaturas <phr function="adjetive" type="restrictive">que so el cielo
              son</phr><pc>.</pc><lb n="22"/>
            <add place="margin"> ¶</add>
            <phr function="inciso" type="absolute">Et faziendol <phr type="syntagm"
                function="copulative">asu ymagen &amp; asu semeiança</phr></phr><pc>.</pc> crio<lb
              n="23"/>
            <phr type="syntagm" function="copulative">los maslo &amp; fenbra</phr><pc>.</pc>
            <phr function="inciso" type="source" n="moysen y iheronimo">assi como lo departen<lb
                n="24"/>
              <phr type="syntagm" function="copulative"><name type="Antropónimo">moysen</name></phr>
              &amp; <phr type="syntagm" function="copulative" n="2"><name type="Antropónimo"
                  >iheronimo</name></phr></phr> enel primero capitulo<lb n="25"/> del <name
              type="book">genesis</name><pc>.</pc>
            <phr function="list" n="2">Et <name type="Antropónimo">iosepho</name> otrossi enel
                primero<lb n="26"/> dela estoria dela antiguedat delos iudios</phr><pc>.</pc><lb
              n="27"/>
            <phr function="list" n="final"><add place="margin"> Et</add> otros muchos quelo affirman
              con ellos</phr><pc>.</pc> Et desi<lb n="28"/> bendixo los <name type="Antropónimo"
              >dios</name> &amp; dixo les <quote type="indirect" source="Dios"><phr type="coord"
                function="copulative">que creçiessen &amp;<lb n="29"/> amuchiguassen</phr> &amp;
              enchiessen la tierra<pc>.</pc> &amp; quela<lb n="30"/> assennoreassen so el su
              poder</quote><pc>.</pc>
            <phr function="incise" type="absolute">bendiziendo a<lb n="31"/> ellos</phr><pc>.</pc>
            bendixo alas animalias dela tierra<lb n="32"/> en ellos<pc>.</pc> ¶ Et mando que<phr
              type="syntagm" function="copulative">los omnes &amp; </phr><lb n="33"
              />animalias<pc>.</pc>
            <phr type="coord" function="copulative">comiessen &amp; uisquiessen <phr type="syntagm"
                function="copulative">delas yeruas<lb n="34"/> dela tierra &amp; <phr
                  function="list" n="3">delas simientes della</phr><pc>.</pc> &amp; delas<lb n="35"
                /> fruytas delos aruoles</phr></phr><pc>.</pc> ¶ <phr type="syntagm" function="cc"
              >Enpos esto to<lb n="36"/>do</phr> cato nuestro sennor <name type="Antropónimo"
              >dios</name> todas las cosas <phr function="adjetive" type="restrictive">que<lb n="37"
              /> auie fechas</phr>:' &amp; uio que eran muy buenas<pc>.</pc><lb n="38"/>
            <add place="margin"> Et</add> fue todo acabado de fazer<pc>.</pc>
            <phr type="syntagm" function="atypical">enel sexto di<lb n="39"/> a</phr><pc>.</pc>
            <phr function="cataphoric"><phr function="inciso" type="source" n="Moises">Como oyredes
                que diz <name type="Antropónimo">moysen</name> adelante</phr></phr><pc>.</pc><lb
              n="40"/>
          </ab>
        </div2>
      </div1>

    </body>
  </text>
</TEI>

1 个答案:

答案 0 :(得分:0)

我仍然不确定我是否已经分别了解了您想要的值,但是不能在评论中交换代码我将此尝试作为答案发布:

                    <td>

                        <xsl:for-each select="//tei:div1//tei:name">                                
                            <div align="center">
                                <xsl:value-of select="preceding::tei:lb[@n][1]/@n"/>
                            </div>
                        </xsl:for-each>
                    </td>

https://xsltfiddle.liberty-development.net/nbUY4ky/1给出了结果

        <td>
           <div align="center"></div>
           <div align="center">32</div>
           <div align="center">34</div>
           <div align="center">8</div>
           <div align="center">24</div>
           <div align="center">24</div>
           <div align="center">25</div>
           <div align="center">25</div>
           <div align="center">28</div>
           <div align="center">36</div>
           <div align="center">39</div>
        </td>

这是否有正确的数字,当然除了前一个div的第一个lb之外?