У меня есть документ XML, который имеет дополнительные узлы в нем на разных уровнях, которые я хочу удалить с помощью XSLT.Какой простой способ обрезать значения из XML
Моя интуиция - это генерация XSD (с использованием Altova или тому подобного), удаление элементов, которые я не хочу отображать на моем выходе, а затем позволить редактору (Altova или тому подобное) генерировать XSLT для преобразования старый XSD в новый XSD.
В тот же день я писал XSL для этого вручную ... но со всеми этими классными инструментами действительно есть причина или может предложить альтернативный способ? Я не сделал этот материал в течение нескольких лет, так что я понял, я хотел бы спросить ...
я в конечном итоге придумываю это, что довольно просто, так что спасибо за предложение:
<?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" >
<xsl:output method="xml" indent="yes"/>
<xsl:template xpath-default-namespace="http://www.tempuri.org" match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template xpath-default-namespace="http://www.tempuri.org" match="SomeNode">
</xsl:template>
<xsl:template xpath-default-namespace="http://www.tempuri.org" match="TheNode[@type!='SomeType' and @type!='OtherType']">
</xsl:template>
</xsl:stylesheet>
Единственное, что мне нужно сделать, это проверить отсутствующий элемент «SomeSubElement» в «TheNode» и вставить пустой элемент, если он отсутствует.
Любые предложения о том, как это сделать? Благодарю.
Насколько причины идти, это, вероятно, быстрее, чтобы написать XSLT, чем XSD ... – annakata
Во-первых, это другой вопрос. Вы должны спросить еще раз. Во-вторых, это не способ иметь дело с QNames: поместите только один «xpath-default-namespace =» http://www.tempuri.org »в корневой элемент« styleheet »или поместите объявление пространства имен« xmlns » : temp = "http://www.tempuri.org" 'в корневом элементе' stylesheet' и использовать полное QName в шаблонах, например 'temp: SomeNode' – 2010-11-02 21:32:08