Я вообще не разбираюсь в XML/XSLT. Я просто пытаюсь научиться достаточно, чтобы преобразовать этот XML-файл в то, что может использовать моя база данных Access. XML-данные были выведены в формате атрибута, а Access - только формат элемента. У меня основные преобразования вниз, но я не могу представить элементарные вложенные данные.Как преобразовать XSLT XML вложенные атрибутные элементы и имя конкатенации
Я хотел бы, чтобы конечным результатом были все элементы. В настоящий момент мой XSLT-скрипт пытается включить атрибут родительского имени в имя дочернего элемента, но это может и не понадобиться. Было бы замечательно, если бы у меня были элементы списка, пронумерованные в их именах. Например, «AuthorList1», «AuthorList2» или «Author1», «Author2».
Вот вроде XML, что я имею дело с (сокращенно):
XML
<Result>
<DocSum>
<Id>25587056</Id>
<Item Name="PubDate" Type="Date">2015 Jan 13</Item>
<Item Name="EPubDate" Type="Date">2015 Jan 13</Item>
<Item Name="Source" Type="String">Invest Ophthalmol Vis Sci</Item>
<Item Name="AuthorList" Type="List">
<Item Name="Author" Type="String">Wang Q</Item>
<Item Name="Author" Type="String">Tuten WS</Item>
<Item Name="Author" Type="String">Lujan BJ</Item>
</Item>
<Item Name="Title" Type="String">Adaptive optics microperimetry</Item>
<Item Name="Volume" Type="String">56</Item>
<Item Name="ArticleIds" Type="List">
<Item Name="pubmed" Type="String">25587056</Item>
<Item Name="pii" Type="String">iovs.14-15576</Item>
<Item Name="doi" Type="String">10.1167/iovs.14-15576</Item>
</Item>
<Item Name="References" Type="List"></Item>
<Item Name="HasAbstract" Type="Integer">1</Item>
</DocSum>
</Result
Я получил довольно далеко с XSLT, но я не все путь там. Одной из проблем, которая продолжает возникать, является то, что пустые элементы (например, ссылки) получают пустые имена, которые недопустимы. Это произошло, когда я попытался выполнить команду, используя шаблон соответствия «Item [@ Type =« List »]». Кроме того, я не могу заставить дочерние узлы (элементы?) Списков стать их собственными элементами.
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*" >
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Item">
<xsl:element name="{@Name}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="child::Item">
<xsl:variable name="Parent" select="TEST"/>
<xsl:element name="{$Parent}{@Name}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Я надеюсь, что это сделал какой-то смысл. Я действительно не хочу быть экспертом в этом, так как я сомневаюсь, что я буду иметь дело с преобразованиями XML снова в течение долгого времени. Я был бы признателен за любую помощь, которая будет готова.
Это так очень полезно! Я тестировал всю конкатенацию имени. Спасибо за помощь. – Lauren