Toon posts:

[xpath] eerste <i> binnen een paragraaf

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag voor elke paragraaf (<div>) de eerst voorkomende <i> selecteren, ik heb dus een structuur als volgt:

code:
1
2
3
4
<div>
  <p>blalalalala <i>deze wel</i> blalalalala <i>deze niet</i> blalala</p>
  <p>blalalalala <i>deze ook niet</i> blalalalala <i>deze niet</i> blalala</p>
</div>

wat ik nu heb is heel simpel:
code:
1
//i[position()=1]

maar dat selecteerd ook de eerste <i> in de tweede <p>
(kan ook korter, maar voor de duidelijkheid ff zo)

probleem is dat die position() dus "meet" tov het parent element van de <i> en ik moet dus tov de eerste <div> die ancestor is.

  • b19a
  • Registratie: September 2002
  • Niet online
code:
1
//i[1]

Hoe werkt deze?
of bedoel je dat met "kan korter"?


offtopic:
Sinds wanneer is <p> gedegradeerd? <div> is geen paragraaf!

[ Voor 90% gewijzigd door b19a op 07-09-2005 21:27 ]


Verwijderd

Topicstarter
dat bedoel ik met korter ja, verder is div een paragraaf als in deel-van-een-hoofdstuk (section), p is een alinea (paragraph), maar da's idd redelijk offtopic :P

wist dat het zou komen...

[ Voor 18% gewijzigd door Verwijderd op 07-09-2005 21:45 ]


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

zoiets?
code:
1
//div/descendant::i[position()=1]

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
ha top!

alleen heb ik wat over het hoofd gezien blijkt :D

ik heb dus een bult <i> elementen verdeeld over verschillende <p>'s in verschillende <div>'s
en nu wil ik dus van elke unieke <i> de eerste markeren. Nu heb ik de eerste van alles, beetje overheen gekeken dus.

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Elke unieke <i> :? qua inhoud of wat? Wat probeer je eigenlijk te doen, de eerste keer dat een afkorting voorkomt deze in een <abbr> veranderen en de rest niet oid?

edit:
testje

wordt al wel langer ;)
code:
1
2
3
4
5
6
7
8
9
10
<xsl:for-each select="//div/descendant::i" >
    <xsl:variable name="text"><xsl:value-of select="text()" /></xsl:variable>
    <xsl:variable name="pos"><xsl:value-of select="position()" /></xsl:variable>
    
    checking: <xsl:value-of select="text()" />
    <xsl:if test="//div/descendant::i[text() = $text and position() &lt; $pos]">
        - <xsl:value-of select="$text" /> kwam eerder voor
    </xsl:if>
    <br />
</xsl:for-each>

[ Voor 62% gewijzigd door Clay op 08-09-2005 10:16 ]

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
elke unieke qua inhoud ja

Wat ik wil is elke eerste instance in een paragraaf koppelen aan de bijbehorende dfn middels een link. Ik doe dat door met een slimme xpath de boel te selecteren en vervolgens met dom functies aan de gang te gaan. Eigenlijk moet ik dus een soort "SELECT DISTINCT" hebben.

gezien je hele berg XSL ben ik bang dat ik beter gewoon alle <i>'s kan selecteren en met arrayfuncties gaan werken om steeds de eerste eruit te pikken

http://www.whatwg.org/specs/web-apps/current-work/#the-dfn
dat geintje implementeren dus eigenlijk...

(andere ideeen hierover zijn ook erg welkom :P)

[ Voor 21% gewijzigd door Verwijderd op 08-09-2005 10:59 ]


Verwijderd

Topicstarter
even een kickje :P misschien zijn er in het weekend wat meer ideeen

ik heb het nu even met wat array checking opgelost, maar het zou mooi zijn als ik in 1 keer de juiste elementen eruit vis
Pagina: 1