如果元素后跟某个字符,则查找该元素

时间:2018-03-13 17:24:22

标签: xml xslt

我正在研究一个文本,我想通过一个样式表XSLT得到一个特定的函数(具体来说,@ phr function =“inciso”type =“absolute”),只要它后面跟着一个句号。 (@pc)。 如何将此条件放在XSLT样式表上? 以下是样式表XSLT和我创建的XML:

<?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="PRUEBA_PUNTOS.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="006">
          <pb n="003r"/>
          <cb n="b"/>
          <head>De <name type="Antropónimo">abel</name> et de su hermano que nascio con el<pc>.</pc></head>
          <ab><phr function="inciso" type="absolute">ANdados <phr type="syntagm"
                function="copulative">treynta annos &amp; seys dias</phr> de quando el mundo fue
              criado</phr><pc>.</pc> <phr function="inciso" type="source" n="luchas y otros">assi como dize
                <phr type="syntagm" function="copulative">mahestre <name type="Antropónimo"
                  >luchas</name> obispo de <name type="place">thuy</name> &amp; otros <phr
                  function="adjetive" type="restrictive">que acuerdan con el</phr></phr></phr><pc>.</pc>
            fizieron <phr type="syntagm" function="copulative"><name type="Antropónimo">adam</name>
              &amp; <name type="Antropónimo">eua</name></phr> otro fijo<pc>.</pc> ¶ Et a este segundo fijo
            dixieron <name type="Antropónimo">abel</name><pc>.</pc> Et <name type="Antropónimo">abel</name>
            <phr function="inciso" type="source" n="esponimientos">segund los esponimientos dela
                <name type="book">biblia</name></phr> quiere dezir en el nuestro lenguage
            castellano<pc>.</pc> <phr function="comparative" type="name" n="abel">tanto como lloro o cosa
                <phr function="adjetive" type="restrictive">que non es duradera</phr></phr><pc>.</pc> ¶ <phr
              function="adjetive" type="explanatory">Onde dize otrossi <name type="Antropónimo"
                >gregorio</name> enla glosa del <name type="book">genesis</name> sobre este logar<pc>.</pc>
              que <phr function="comparative" type="name" n="abel"><name type="Antropónimo"
                  >abel</name> tanto quiere dezir como baho<pc>.</pc> <phr function="causal">por que <phr
                    type="sub" function="comparative">assi como el baho <phr type="coord"
                      function="copulative">se ua ayna &amp; se esparze por ell ayre &amp; non
                      paresçe</phr></phr></phr></phr></phr><pc>.</pc> <pb n="003v"/>
            <cb n="a"/>assi fallescio ayna <name type="Antropónimo">abel</name><pc>.</pc> <phr
              function="inciso" type="cataphoric">&amp; fues commo oyredes &amp; non parescio
              mas</phr><pc>.</pc> ¶ Et con este <name type="Antropónimo">abel</name> naçio otra hermana de un
            parto commo <name type="Antropónimo">cayn</name> et la suya<pc>.</pc> Et esta ouo nombre <name
              type="Antropónimo">delbora</name>
            <phr function="adjetive" type="restrictive">que muestra <phr function="comparative"
                type="name" n="delbora">tanto como seguydora</phr>
              <phr function="causal">por que siguio asu hermano <name type="Antropónimo"
                >abel</name></phr></phr><pc>.</pc> <phr function="causal">Ca <phr function="inciso"
                type="source" n="unos">asi commo dizen unos</phr>
              <phr type="sub" function="comparative">uisco poco como el</phr></phr><pc>.</pc> <phr
              function="concessive">Pero otros cuentan <phr type="coord" function="copulative">que
                uisco mucho<pc>.</pc> &amp; que <phr function="comparative" type="name" n="delbora">tanto
                  commo seguidora quiere dezir <name type="Antropónimo"
              >delbora</name></phr></phr></phr><pc>.</pc> <phr function="adversative">Non <phr
                function="causal">por que de muerte ella siguiesse assu hermano</phr><pc>.</pc> mas por quel
              siguio <phr type="syntagm" function="copulative">en iusticia &amp; en bondat</phr>
              amando a <name type="Antropónimo">dios</name></phr><pc>.</pc> Ca departen que tanto uisco que
            alcanço asu hermano <name type="Antropónimo">seth</name><pc>.</pc> que nasçio muchos annos
            despues que <name type="Antropónimo">delbora</name><pc>.</pc> &amp; que ella caso con el<pc>.</pc> <phr
              function="inciso" type="cataphoric">Et desto diremos adelante</phr><pc>.</pc> </ab>
        </div2>
      </div1>
    </body>
  </text>
</TEI>
<?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>INCISO</b>
                </h3>
                <table width="750" border="1" align="center">
                    <tr>
                        <th scope="col" bgcolor="#00CCFF">
                            <div align="center">Inciso (absoluto)</div>
                        </th>
                    </tr>
                    <tr>
                        <td>
                            <xsl:for-each
                                select="//tei:div1//tei:phr[@function = 'inciso' and @type = 'absolute']">
                                <div align="center">
                                    <xsl:value-of select="."/>
                                </div>
                            </xsl:for-each>
                        </td>
                    </tr>
                </table>
            </body>
        </html>

    </xsl:template>
</xsl:stylesheet>

2 个答案:

答案 0 :(得分:0)

  

我想通过样式表XSLT获得某个函数(特别是@phr函数=&#34; inciso&#34; type =&#34;绝对&#34;)只有在它之后是一个完整的句点(@pc)。如何将此条件放在XSLT样式表上?

apt XPath表达式可能是

count(descendant::tei:pc) > 0

检查当前元素是否有一个或多个<pc>子元素。在整个xsl:for-each中,这看起来像

<xsl:for-each select="//tei:div1//tei:phr[@function = 'inciso' and @type = 'absolute' and count(descendant::tei:pc) > 0]">

另一种解释是,如果函数紧跟 <pc>元素,您只需要一个肯定的结果:

descendant::*[1]=tei:pc

在整个xsl:for-each中,这看起来像

<xsl:for-each select="//tei:div1//tei:phr[@function = 'inciso' and @type = 'absolute' and descendant::*[1]=tei:pc]">

答案 1 :(得分:0)

如果您希望找到<phr function="inciso" type="absolute">ANdados <phr type="syntagm" function="copulative">treynta annos &amp; seys dias</phr> de quando el mundo fue criado</phr><pc>.</pc>等内容,请使用//tei:div1//tei:phr[@function = 'inciso' and @type = 'absolute' and following-sibling::node()[1][self::tei:pc]