Получить родительский узел от дочернего и переименовать его - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть ввод ниже, и я написал xslt, который дает мне офис с определенным идентификатором, но так как я получаю родительский узел, я также получаю тег <e>.Моя проблема в том, что я не хочу иметь этот тег <e>.

 <response>
   <offices>
     <e>
      <id>33701</id>
      <name>aa</name>
     </e>
      .....<e></e>

   </offices>
 </response>

  <xsl:template match="*:response/offices">
        <econ:GetOfficesResponse>
            <Office>
                <xsl:for-each select="e/id">
                    <xsl:if test="text() = $office_id">
                        <xsl:copy-of select="parent::node()"/>
                    </xsl:if>
                </xsl:for-each>
            </Office>
        </econ:GetOfficesResponse>
    </xsl:template>
</xsl:stylesheet>

Ответ, который я получаю:

<econ:GetOfficesResponse>
   <Office>
      <e>
        <id>33701</id>
        <name>...</name>
  </e>
 </Office>

Ответ, которыйЯ хочу:

<econ:GetOfficesResponse>
   <Office>
        <id>33701</id>
        <name>...</name>
 </Office>

Может кто-нибудь помочь мне с этим?Я / м, используя xslt 2.0

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

попробуйте этот код:

</p>

<code><xsl:template match="*:response/offices">
    <econ:GetOfficesResponse>
        <Office>
            <xsl:for-each select="e/id">
                <xsl:if test="text() = $office_id">
                    <xsl:copy-of select="parent::node()/child::node()"/>
                </xsl:if>
            </xsl:for-each>
        </Office>
    </econ:GetOfficesResponse>
</xsl:template>
</code>

0 голосов
/ 12 февраля 2019

Кажется, вместо вашего xsl:for-each вы просто хотите один <xsl:copy-of select="e[id = $office_id]/*"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...