Я новичок в XSLT, но я делаю много XML-модификаций для работы, поэтому я пытаюсь учиться. У меня есть входной XML в следующем формате (есть XML выше и ниже):Удалите все дочерние элементы, связанные с определенным узлом, и замените одним дочерним элементом.
<Parent Value="x">
<!---->Unlimited number of child elements could exist with any value from 0-1
<Child Value="0.1"/>
<Child Value="1"/>
<Child Value="0.30"/>
...
</Parent>
мне нужен родительский/дочерний узел вывода XML в следующем формате:
<Parent Value="x">
<Child Value="0.3"/>
</Parent>
Где есть только один дочерний элемент и его значение постоянны на 0,3.
Мой текущий XSLT вид работ:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Parent">
<Parent>
<xsl:apply-templates select="@*|*"/>
<Child Value="0.3"/>
</Parent>
</xsl:template>
<xsl:template match="Child[@Value!=0.3]"/>
Я пытался создать нужный дочерний элемент во всех файлах (в случае, если он не существует)
<Child Value="0.3"/>
, а затем выводить только дочерний элемент, если его значение = 0,3. Однако это иногда приводит к дублированию дочернего узла, и я чувствую, что, возможно, я не подхожу к этому правильно. Кроме того, заголовки xmlns: xs появляются после элемента «Родитель», а не в верхней части выходного документа. Любое руководство будет принята с благодарностью!
Пример выходного тока:
<Parent Value="x" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<Child Value="0.30" />
<Child Value="0.3" />
</Parent>
Не могу сказать, насколько это полезно! Это имеет смысл. Спасибо огромное! – lcf0285