Open gerritbruening opened 6 years ago
Probier mal:
<xsl:template match="p[matches(., '\[\d+\]')]">
<pb n="{replace(., '\[(\d+)\]', '$1')}"/>
</xsl:template>
Setzt voraus, dass die Seitenzahlen immer rein numerisch sind; für '1r' etc. ersetze die \d
z.B. durch \w
oder [0-9rv]
oder so.
Danke, das hilft bei dem gegebenen Fall sehr gut!
Allerdings kommt \[d+\]
auch mitten in Absätzen vor, z.B.
<p><hi style="font-size:10pt">Herr Salomon Maimon, den er wegen ſeines großen
Scharfſinns außerordentlich ſchätzte, und ich waren faſt die einzigen, die
[(208)]er gern bei ſich ſah, weil er ſich unſertwegen nicht zu genieren
brauchte.</hi>
Da erwischt dann auch p/hi/text()[matches(., '\[\(\d+\)\]')]
zu viel Dokumentinhalt.
Hast Du schon regeln für text()
?
Sonst:
<xsl:template match="text()">
<xsl:analyze-string regex="\[\((\d+)\)\]" select=".">
<xsl:matching-substring>
<pb n="{regex-group(1)}"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
OK: https://github.com/faustedition/faust-gen-html/blob/master/tools/docx-cleanup.xsl#L37 Aber das hat nicht den Effekt, den ich erwartet hatte. Beispieldaten liegen jetzt hier: https://github.com/faustedition/xml/tree/master/testimony/docx2tei
Zwei issues:
1) Ambiguous Rule Match → priority für die text()
-Regel. Warnung sollte Dir Oxygen aber angezeigt haben.
2) Du hast die RE flasch abgeschrieben. Wenn die Seitenzahlen als [(42)]
im Text liegen, ist der RE \[\((\d+)\)\]
: \[
/\]
und \(
/\)
für die eckigen und runden Klammern, (·)
um die innere Regular Expression (\d+
) als regex-group(1)
einzufangen
b623d7584d31b6c94aadf358c1bb1ef46d9c3e2d
Warnung sollte Dir Oxygen aber angezeigt haben.
Ja, aber nur extrem kurz, und ich habe das nicht mehr aufrufen können. Ich habe dann geschaut, wo ich vielleicht doch noch auf text()
matche, um die Ambiguität herauszufinden, aber ich habe keine Stelle gefunden.
Das mit den (...)
war Absicht, denn manchmal steht auch [42]
in den Daten.
Schön wäre dann noch, wenn wir das darumherum liegende p
samt hi
beiseiteschaffen könnten, das jetzt ja nicht mehr gebraucht wird. Soll man das in einem nachgelagerten xsl
machen und beide in ein xproc
tun?
Man könnte ein XProc schreiben, solchen Kleinigkeiten tendiere ich aber eher dazu, das doch im Stylesheet mit Modi und Variablen fürs Zwischenergebnis zu machen.
Ah, das war bei mir in einer langen Liste von Reitern ganz unten rechts versteckt, richtig.
In Bezug auf das Ergebnis könnte man sagen: p[not(node()[not(self::pb)])]
sollen mit apply-templates
entfallen .
Können sich @sandrakrause und @thvitt bei Gelegenheit anschauen. Wo sind die Daten? Schon auf Github?
@thvitt, vom Dienstleister bekomme ich (aufgeräumt) so was hier:
<p>[18]</p>
bedeutet<pb n="18"/>
Jetzt suche ich nach einem Ausdruck für das Skript hier, mit dem ich aus dem ersten das zweite machen kann. Hast du da einen Rat?