Je veux juste faire une conversion directe (presque seulement chercher et remplacer) mais j'ai de la difficulté à mettre les choses en place - je me retrouve avec des liens hors de propos et du contenu dupliqué . Je suis sûr que je fais quelque chose de stupide avec mes tentatives de traverser le xml:)nokogiri: xml to html
J'essaie avec:
builder = Nokogiri::HTML::Builder.new do |doc|
doc.html {
doc.body {
doc.div.wrapper! {
doc.h1 "Short"
xm.css('paragraph').each do |para|
doc.h3.para(:id => para['number']) { doc.text para['number'] }
doc.p.narrativeparagraph {
xm.css('paragraph inner-section').each do |section|
doc.span.innersection { doc.text section.content
xm.css('inner-section xref').each do |xref|
doc.a(:href => "#" + xref['number']) { doc.text xref['number'] }
end
xm.css('paragraph inner-text').each do |innertext|
doc.span.innertext { doc.text innertext.content }
end
} end #inner-section
}
end#end paragraph
}#end wrapper
}#end body
}#end html
end#end builder
sur:
<?xml version="1.0"?>
<looseleaf>
<paragraph number="1">
<inner-section> blah one blah <xref number="link1location"></xref>
<inner-text> blah two blah blah </inner-text>
blah three
</inner-section>
</paragraph>
<paragraph number="2">
<inner-section> blah four blah <xref number="link2location"></xref>
<inner-text>blah five blah blah </inner-text>
blah six
</inner-section>
</paragraph>
</looseleaf>
pour créer:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC- html40/loose.dtd">
<html>
<body>
<div id="wrapper">
<h1>Short</h1>
<h3 class="para" id="1">1</h3>
<p class="narrativeparagraph">
<span class="innersection"> blah one blah <a href="#link1location">link1location</a>
<span class="innertext"> blah two blah blah </span>
blah three</span>
</p>
<h3 class="para" id="2">2</h3>
<p class="narrativeparagraph">
<span class="innersection"> blah four blah <a ref="#link2location">link2location</a>
<span class="innertext">blah five blah blah </span>
blah six</span></p>
J'ai essayé toutes sortes de choses pour que cela fonctionne, la structure html de base sort d'accord, mais les enfants des paragraphes sont en désordre - toute aide serait très appréciée. Cordialement, Ritchie
Tous les noobs dans le même bateau que moi - J'ai reculé d'essayer d'utiliser Builder et j'arrive lentement mais sûrement avec: frag.xpath ("// paragraphe"). Chaque {| div | div.name = "p"; div.set_attribute ("class", "narrativeparagraph")} frag.css ('section interne xref'). chaque {| xref | xref.name = "a"; xref.set_attribute ("href", "#" + xref ['nombre']); xref.content = xref ['number']} – ritchielee
Le code html que vous avez donné à titre d'exemple - est-ce ce que vous * aimeriez * construire? Pouvez-vous donner un exemple de la façon dont cela se passe? –