Экспортировать значение таблицы XML как CSV - PullRequest
0 голосов
/ 29 октября 2018

У меня есть XML-файл, состоящий из различных тегов. Меня интересует тег с именем tbody , за которым следуют tr и td . Но я только хочу разобрать данные, которые появляются в 3-м tbody . я написал этот кусок кода, но он не может отфильтровать его по позиции []

    <xsl:for-each select="//tbody[position()=3]">
        <xsl:for-each select="tr">
            <xsl:for-each select="td">
                <xsl:value-of select="."/>
                <xsl:if test="position() != last()">
                    <xsl:value-of select="$delimiter"/>
                </xsl:if>
            </xsl:for-each>
        <xsl:text>&#xa;</xsl:text>
        </xsl:for-each>
    </xsl:for-each>

Может кто-нибудь, пожалуйста, помогите мне понять, что не так с тем, что я сделал? Как выполнить цикл на tbody с позицией 3 в файле XML.

xml сам по себе очень большой и генерируется с помощью опции view page source . Вы можете скачать то же самое по ссылке ниже https://ufile.io/4foqi

1 Ответ

0 голосов
/ 29 октября 2018

Когда вы делаете //tbody[position()=3], вы фактически получаете все tbody элементы, которые находятся в этой позиции под своим собственным родителем.

Если вам нужен третий tbody элемент, независимо от того, где он находится в XML, сделайте это

<xsl:for-each select="(//tbody)[position()=3]">

Обратите внимание, вы можете сократить утверждение до этого ...

<xsl:for-each select="(//tbody)[3]">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...