2013-08-03 7 views
5

için html XSLT ile bir bağlantı oluşturmak Aşağıdaki xml kod var: Zaten 3 farklı HTML (A için bir tane, B için diğeri elde benim XSL ilediğer html

<?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"?> 
<TEI xmlns="http://www.tei-c.org/ns/1.0"> 
    <teiHeader/> 
    <text> 
     <head n="3">Capitulo primeyro</head> 
     <pb facs="folio16r.jpg"/> 
     <div> 
      <p>... figurado <app> 
       <lem>pollo</lem> 
       <rdg wit="#A">pollo</rdg> 
       <rdg wit="#B">pello</rdg> 
      </app> Parayso ...</p> 
      <p> ... <app> 
       <lem>sacarõ</lem> 
       <rdg wit="#A">sacarõ</rdg> 
       <rdg wit="#B">ssaee</rdg> 
       </app> ...</p> 
     </div> 
     <pb facs="folio16v.jpg"/> 
     <div> 
      <p> .... os fisicos <app> 
       <lem>dessesperarom</lem> 
       <rdg wit="#A">desseperarom</rdg> 
       <rdg wit="#B">desesperõ</rdg> 
       </app> ... que assy <app> 
       <lem>saa</lem> 
       <rdg wit="#A">sooa</rdg> 
       <rdg wit="#B">saa</rdg> 
       </app> ...</p> 
     </div> 
    </body> 
</text> 

lemma ile). Eğer li bir bağlantı oluşturmak için bir başlangıç ​​görüyoruz ama şöyle

<ul> 
    <li id="app_1"><i>prophetas</i> <a href="#">Editor</a> <br /><i>prophetas</i> <a href="#">A</a> <br /></li> 
    <li id="app_2"><i>pollo</i> <a href="#">Editor</a> <br /><i>pollo</i> <a href="#">A</a> <br /></li> 
    <li id="app_3"><i>sacarõ</i> <a href="#">Editor</a> <br /><i>sacarõ</i> <a href="#">A</a> <br /></li> 
    <li id="app_4"><i>dessesperarom</i> <a href="#">Editor</a> <br /><i>desseperarom</i> <a href="#">A</a> <br /></li> 
    <li id="app_5"><i>saa</i> <a href="#">Editor</a> <br /><i>sooa</i> <a href="#">A</a> <br /></li> 
    <li id="app_6"><i>ante</i> <a href="#">Editor</a> <br /><i>ante</i> <a href="#">A</a> <br /></li> 
</ul> 

İstediğimi alamadım:

<xsl:template match="app"> 
    <xsl:variable name="appNumber" select="count(preceding::app) + 1"/> 
    <a href="#app_{$appNumber}"><xsl:apply-templates select="lem"/></a> 
</xsl:template> 

<xsl:template match="app" mode="footnote"> 
    <xsl:variable name="appNumber" select="count(preceding::app) + 1"/> 
    <li id="app_{$appNumber}"> 
     <xsl:for-each select="rdg"> 
      <i><xsl:apply-templates/></i><xsl:text> </xsl:text> 
      <a> 
       <xsl:attribute name="href"> 
        <xsl:text>#</xsl:text> 
        <xsl:apply-templates select="app"/> 
       </xsl:attribute> 
       <xsl:value-of select="substring-after(@wit, '#')"> 
       </xsl:value-of> 
      </a> 
      <xsl:text> </xsl:text> 
      <br/> 
      <xsl:if test="position() lt last()"></xsl:if> 
     </xsl:for-each> 
    </li> 
</xsl:template> 

Şimdi bu html var: Ben uygulama için XSL bir şablon oluşturdu . Bağlantının zekâdan (#A veya #B veya #Editor) diğer html'deki aynı metin noktasına gittiğini söylemek isterim. Örneğin, bir A html, uygulamada, B'yi tıklatıyorsam B html'de aynı metin noktasına gitmek istiyorum. Biri yardım edebilir mi?

+0

Açıklamalarınız çok kafa karıştırıcı. Almak istediğiniz HTML’yi yazmak ne dersin? – Tomalak

+0

Ayrıca, büyük bir XML örneğine sahip olmak her zaman iyi olsa da, şu anki çıktınız geçerli girişinizle uyuşmadığından, burada yeterince gösterilmediğini düşünüyorum. Görünüşe göre, giriş XML'in bize göstermiş olduğunuz şeye farklı bir metinle altı ** uygulama ** öğesi olması gerekir. Mevcut çıktınızı almak için kullanmakta olduğunuz XML'i gösterebilirseniz, bu da çok yardımcı olacaktır. Teşekkürler! –

+0

Sevgili Tim C, Hepsini gösterdim. Teşekkürler – user2648292

cevap

0

Eğer doğru alırsam, bu sadece bağlantının doğru bileşimi ile ilgilidir. Her cihaz girişinde farklı kaynak dosyalarına bağlı olması gereken bir aygıt dosyanız var gibi görünüyor. Aslında oldukça yakındın. Bu deneyin:

<xsl:attribute name="href"> 
    <xsl:value-of select="substring-after(@wit, '#')"/> 
    <xsl:text>.html#app_</xsl:text> 
    <xsl:value-of select="$appNumber"/> 
    <xsl:apply-templates select="app"/> 
</xsl:attribute> 

Bu böyle bağlantıları üretecek:

<a href="A.html#app_2">A</a> 

Ben zaten her zaman sonra kendiniz için bunu çözmüş olmasının varsayalım. Yine de buna cevap vermek istedim, belki biri için hala yararlıdır.