XSLT-копия только дочерних данных - PullRequest
1 голос
/ 02 апреля 2019

У меня есть некоторые XML-данные, которые выглядят так:

<data>
  <old><value>1</value></old>
  <new><value>2</value></new>
</data>

И я пытаюсь получить только данные под <new>, поэтому результат должен выглядеть следующим образом:

<value>2</value>

Я использую следующий XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">    
  <xsl:template match="new">
    <xsl:copy-of  select="node()" />
  </xsl:template>
</xsl:stylesheet>

Тем не менее, выходные данные сохраняют некоторые паразитные данные из <old> и выглядят так:

1
<value>2</value>

Что яделаете неправильно?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Или просто:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    

<xsl:template match="/data">
    <xsl:copy-of select="new/node()" />
</xsl:template>

</xsl:stylesheet>
0 голосов
/ 02 апреля 2019

Я понял это ... отправил этот вопрос слишком рано! Мне нужно было добавить шаблон xsl, чтобы игнорировать все под старым.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">    
  <xsl:template match="new">
    <xsl:copy-of  select="node()" />
  </xsl:template>
  <xsl:template match="old" />
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...