2017-09-14 1 views
0

Ich möchte eine bestimmte Klasse von Tabellen im transformierten HTML über CSS anders gestalten.TEI-P5: Wie füge ich einen CSS-Klassennamen zum HTML -Tag hinzu?

Zum Beispiel in XML:

<table> 
    <row role="label"> 
    <cell> 
     Manuscrit Bodmer 
    </cell> 
    <cell> 
     Manuscrit fr. 1457 
    </cell> 
    </row> 
    <row> 
    <cell> 
     <lb/>Début <supplied><locus from="1r">fol. 1</locus></supplied> : 
    </cell> 
    <cell> 
     <note><lb/><supplied>fol. 6v&#7506;, ligne 15</supplied> :</note> 
    </cell> 
    </row> 
</table> 

In XSL:

<xsl:template match="tei:table[not(. = '')]"> 
    <xsl:param name="sprache"/> 
    <xsl:element name="table"> 
     <xsl:apply-templates><xsl:with-param name="sprache" select="$sprache"/></xsl:apply-templates> 
    </xsl:element> 
</xsl:template> 

Um das zu erreichen, dass ich denke, eine bestimmte CSS-Klasse auf diese Tabelle zB die Anwendung. in generierten HTML-

<table class="comparison-table"> 

und Stil es in CSS. Ist das möglich? Und wie kann ich das genau erreichen?

--- Aktualisieren Dank @ zx485 I XML & XSL aktualisiert:

<xsl:template match="tei:table[@rend='comparison-table']"> 
    <xsl:param name="sprache"/> 
    <xsl:copy> 
     <xsl:attribute name="class"><xsl:text>comparison-table</xsl:text></xsl:attribute> 
     <xsl:apply-templates><xsl:with-param name="sprache" select="$sprache"/></xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="tei:table[not(. = '')]"> 
    <xsl:param name="sprache"/> 
    <xsl:element name="table"> 
     <xsl:apply-templates><xsl:with-param name="sprache" select="$sprache"/></xsl:apply-templates> 
    </xsl:element> 
</xsl:template> 

Und in meinem XML:

<table rend="comparison-table"> 
    <row role="label"> 
     <cell> 
      Manuscrit Bodmer 
     </cell> 
     <cell> 
      Manuscrit fr. 1457 
     </cell> 
    </row> 
    .... 

Aber in der generierten HTML-Datei der Tabellen nicht tun habe css classname "comparison-table".

=== Update 2: Wie @ zx485 im Diskussionsraum schlug ich musste einfach

<xsl:template match="tei:table"> 

Antwort

2

ändern Ihre Vorlage

<xsl:template match="tei:table[not(. = '')]"> 
    <xsl:param name="sprache"/> 
    <xsl:copy> 
     <xsl:attribute name="class"><xsl:text>comparison-table</xsl:text></xsl:attribute> 
     <xsl:apply-templates><xsl:with-param name="sprache" select="$sprache"/></xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 
+0

Vielen Dank! Gibt es eine Möglichkeit, den CSS-Klassennamen auf nur solche Tabellen zu beschränken, deren Bezeichner "Vergleichstabelle" heißt? Im Moment erhalten Sie mit Ihrer Änderung alle HTML-Tabellen den Klassennamen "Vergleichstabelle". – StandardNerd

+0

Ich habe Ihre Vorlage verwendet. Es genügt also, Vorlagen zu erstellen, die Ihren Kriterien für diese spezifischen 'Tabellen genügen (verwenden Sie Prädikate wie' match = "Tabelle [Prädikat]" '.) – zx485

+0

Ah, ok. Wie schreibe ich den Bezeichner in XML zB

? – StandardNerd

0

I zx485 Lösung mit xsl ändern Refactoring: if es ist wahrscheinlich besser lesbar und folgt dem DRY-Prinzip:

<xsl:template match="tei:table"> 
    <xsl:param name="sprache"/> 
    <xsl:element name="table"> 
    <xsl:if test="@rend='comparison-table'"> 
     <xsl:attribute 
name="class"><xsl:text>comparison-table</xsl:text></xsl:attribute> 
    </xsl:if> 
    <xsl:apply-templates><xsl:with-param name="sprache" 
select="$sprache"/></xsl:apply-templates> 
    </xsl:element> 
</xsl:template> 
Verwandte Themen