0

nokogiri で解析したい非常に単純な ODF ドキュメントがあります。

XML は次のようになります。

<office:body>
<office:text>
    <text:sequence-decls>
        ...
    </text:sequence-decls>
    <text:section text:name="categorylevel1" text:style-name="Sect1">
        <text:p text:style-name="Title">[CATEGORY_LEVEL_1_NAME]</text:p>
    </text:section>
</office:text>

categorylevel1現在、ドキュメントのセクションを選択しようとしています。私が使用しているライブラリは、XPath を自動的に生成し、
".//text:section[@text:name='categorylevel1']"
正しいものを生成します。ここでの問題は、ライブラリ (nokogiri) が MRI ではこのパスを受け入れているように見えますが、JRuby では受け入れないようです (SyntaxError をスローします)。ライブラリの Java バージョンは名前空間属性をサポートしていないようです。

ドキュメントのセクションを参照する別の方法はありますか? たとえば、text:name属性を使用するだけですか?名前空間を無視する方法はありますか? セクションのtext:name属性値はドキュメント全体で一意になるため、参照ミスは問題になりません。

4

1 に答える 1

2

「ドキュメントのセクションを参照する別の方法はありますか?たとえば、 text:name 属性を使用するだけですか?」

を使用して要素名を無視でき*ます。このように、 text:name 属性を使用するだけで要素を参照できます。

.//*[@text:name='categorylevel1']

「名前空間を無視する方法はありますか?」

local-name()名前空間を無視するために使用できます。たとえばtext:name、属性の名前空間を無視して属性値で要素をフィルタリングするには:

.//*[@*[local-name()='name' and .='categorylevel1']]
于 2014-10-27T11:43:38.177 に答える