ile bölünmüş ve düz düğümler İç içe geçmiş bir açılımım olamaz, bu nedenle onları sınıflandırmalarını ve sınıf özniteliklerini birleştirmem gerekir, böylece hangi sınıfların ebeveyn olduğunu izleyebilirim. böylece bile alma,XSLT
İşte<body>
<h1 class="section">Title</h1>
<p class="main">
ZZZ
<span class="a">
AAA
<span class="b">
BBB
<span class="c">
CCC
<preserveMe>
eeee
</preserveMe>
</span>
bbb
<preserveMe>
eeee
</preserveMe>
</span>
aaa
</span>
</p>
</body>
istenen çıktı üretmesi
<body>
<h1 class="section">Title</h1>
<p class="main">
ZZZ
<span class="a">
AAA
</span>
<span class="ab">
BBB
</span>
<span class="abc">
CCC
<preserveMe>
eeee
</preserveMe>
</span>
<span class="ab">
bbb
<preserveMe>
eeee
</preserveMe>
</span>
<span class="a">
aaa
</span>
</p>
</body>
İşte
ben geldim, en yakın olduğu (Ben buna gerçekten yeniyim var:
İşte basitleştirilmiş giriş var bu uzak uzun zaman aldı ...)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="*/span">
<span class='{concat(../../@class,../@class,@class)}'>
<xsl:value-of select='.'/>
</span>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Hatalı denememin sonucunu ve kendiniz çalıştırırsanız gerçekten istediğim noktadan ne kadar uzakta olduğunu görebilirsiniz. İdeal olarak, iç içe geçmiş düzeylerin keyfi sayısını kabul eden ve ayrıca kesintili yuvaları (span, span, notSpan, span ...) işleyebilen bir çözüm istiyorum.
düzenleme: İstek üzerine belirtilen yorumcular için iç içe geçmiş yapının içine etiket ekledim. Ayrıca, XSLT v1.0 kullanıyorum, ancak gerekirse diğer sürümleri kullanabilirim.
düzenleme 2: Örneğimin gerçekten dönüştürmem gerekenlerle karşılaştırıldığında aşırı çerçevelendiğini fark ettim. Yani, diğer etiketlerden sınıfları kaybedemem; sadece açıklıklar birleştirilebilir.
Göründüğü kadar karmaşık olabilir: bir yayılma metni dışındaki düğümleri içerebilir mi? "Kesilmiş yuvalardan" bahsediyorsunuz, fakat kesinti noktalarının nereye gitmesi gerekiyor? –
Evet, bir span diğer (notSpan) düğümleri içerebilir ve eğer mümkünse korunmalıdır (ana açıklık düğümleri içinde). Temel olarak, kesinti yapan düğümler, hiç düğüm olmadıkları gibi ele alınmalıdır (düz metinmiş gibi). Tek çözüm bunu başaramazsa, başka düğümlerin de bölünebileceğini düşünüyorum. – DocBuckets
Korkarım cevabını gerçekten anlamıyorum. Örneğinizi, örneğin, her bir metin() için bir span 'oluştururken, diğer senaryoların nasıl korunacağını açıklamalısınız, farklı senaryoları –