我掃描 scribus SLA 文件並希望找到具有某些特定段落樣式的文字。 SLA 檔案格式是一種非常扁平的 XML 格式,並且連續有多個段落,每個段落都以具有段落樣式屬性的<trail/>
或標籤分隔。<para/>
我可以到達<StoryText>
包含其中之一的對象,但我需要到達<ITEXT>
緊鄰它之前的標籤,因為它的 CH 屬性包含我正在尋找的文字。
這是我如何到達包含 StoryText 的方法:
xmlstarlet sel -t -c "SCRIBUSUTF8NEW/DOCUMENT/PAGEOBJECT/StoryText [para/@PARENT='SearchedStyle']" myfile.sla
它產生例如:
<StoryText>
<DefaultStyle/>
<ITEXT CH="Et main­te­nant"/>
<breakline/>
<ITEXT CH="qu’est ce qu’on fait ?"/>
<para PARENT="SomeOtherParagraphStyle"/>
<para/>
<ITEXT CH="The Calendar"/>
<trail PARENT="SearchedStyle"/>
</StoryText>
我也可以到達<trail PARENT="SearchedStyle"/>
但是我怎麼才能到達<ITEXT CH="The Calendar"/>
節點?
答案1
不確定這是最好的解決方案,但這是我設法做到這一點的方法:
xmlstarlet sel -t -c "SCRIBUSUTF8NEW/DOCUMENT/PAGEOBJECT/StoryText/trail[@PARENT='SearchedStyle']/preceding-sibling::ITEXT[1]" myfile.sla
並取得其CH
屬性值:
xmlstarlet sel -t -v "SCRIBUSUTF8NEW/DOCUMENT/PAGEOBJECT/StoryText/trail[@PARENT='SearchedStyle']/preceding-sibling::ITEXT[1]/@CH" myfile.sla
哇哦