Разбор WordprocessingML с использованием XPath, XQuery или XPathNavigator
Я имею дело с обработкой текста ML (файл Office Word) с использованием выражений XPath. Из-за характера закладок, размещаемых в документе, начало закладки может быть где-то еще, а затем конец. Таким образом, они на самом деле не следуют какой-либо правильно сформированной иерархии XML, поэтому возникает проблема написания выражений XPath для такого закладочного контента для чтения из файла document.xml.
Может кто-нибудь помочь, пожалуйста, как обрабатывать такой необычный анализ XML с помощью XPath? например ниже таблицы:
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="003A3B76">
<w:bookmarkStart w:id="3" w:name="Table3"/>
</w:p>
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="TableGrid"/>
<w:tblW w:w="0" w:type="auto"/>
<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="533"/>
<w:gridCol w:w="2148"/>
<w:gridCol w:w="986"/>
<w:gridCol w:w="865"/>
<w:gridCol w:w="4818"/>
</w:tblGrid>
<w:tr w:rsidR="003A3B76" w:rsidTr="005666D2">
<w:tc>
<w:tcPr>
<w:tcW w:w="533" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="BFBFBF" w:themeFill="background1" w:themeFillShade="BF"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>#</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2148" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="BFBFBF" w:themeFill="background1" w:themeFillShade="BF"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>Name</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="986" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="BFBFBF" w:themeFill="background1" w:themeFillShade="BF"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>Age</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="865" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="BFBFBF" w:themeFill="background1" w:themeFillShade="BF"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>Weight</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="4818" w:type="dxa"/>
<w:shd w:val="clear" w:color="auto" w:fill="BFBFBF" w:themeFill="background1" w:themeFillShade="BF"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>Will</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr w:rsidR="003A3B76" w:rsidTr="005666D2">
<w:tc>
<w:tcPr>
<w:tcW w:w="533" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>2</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="2148" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>Nagraj</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="986" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>38</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="865" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>150lb</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="4818" w:type="dxa"/>
</w:tcPr>
<w:p w:rsidR="003A3B76" w:rsidRDefault="003A3B76" w:rsidP="005666D2">
<w:r>
<w:t>Be real</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:bookmarkEnd w:id="3"/>
</w:tbl>
Закладка Заканчивается здесь внутри таблицы, но не в <tr>
или же <tc>
, и bookmarkStart запускается за пределами таблицы. Это сценарий, который я имею из моих тегов. Пожалуйста, помогите с этим. Написание выражения Xpath для этого становится сложным, любая помощь с XSLT также приветствуется.