스크리버스 SLA 파일을 스캔하고 특정 단락 스타일이 있는 텍스트를 찾고 싶습니다. SLA 파일 형식은 매우 단순한 XML 형식이며 한 행에 여러 단락이 있으며 각 단락은 단락 스타일 속성이 있는 <trail/>
또는 태그로 구분됩니다. 이들 중 하나를 포함하는 개체 <para/>
에 접근할 수 있지만 해당 CH 속성에 내가 찾고 있는 텍스트가 포함되어 있기 때문에 바로 앞에 오는 <StoryText>
태그에 접근해야 합니다 .<ITEXT>
포함된 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
와우