Я новичок в мире XSLT. Я нашел пару потоков здесь, которые помогли, но поскольку я действительно не понимаю, что я делаю, я немного застрял. Я пытаюсь перебрать и форматировать некоторые вложенные XML.XSL-преобразование вложенных XML
Моего XML
<?xml version="1.0" encoding="UTF-8"?>
<exchange>
<vco>
<vco.srs>
<vco_crsc.vco.srs>BUUBMS</vco_crsc.vco.srs>
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs>
<vco_rouc.vco.srs>USMANG</vco_rouc.vco.srs>
<cbo>
<cbo.srs>
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs>
</cbo.srs>
<cbo.srs>
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs>
</cbo.srs>
</cbo>
</vco.srs>
</vco>
</exchange>
От чтения другого аналогичного поста я создал шаблон на основе битого кода. Шаблон функционирует, но в идеале я бы хотел, чтобы он отформатировался по-разному, поскольку я теряю форматирование полей из-за шаблонов. Предположим, мне нужен другой шаблон, но, как я уже сказал, не совсем уверен, что я делаю!
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/root">
<ImportTask>
<xsl:apply-templates select="CourseDetails"/>-<xsl:apply-templates select="CourseOcc"/>
</ImportTask>
</xsl:template>
<xsl:template match="CourseDetails">
<Courses>
<xsl:for-each select="exchange/vco/vco.srs">
<Course>
<CourseCode><xsl:value-of select="vco_crsc.vco.srs"/></CourseCode>-<Programmecode><xsl:value-of select="vco_prgc.vco.srs"/></Programmecode>-<Routecode><xsl:value-of select="vco_rouc.vco.srs"/></Routecode>
</Course>
</xsl:for-each>
</Courses>
</xsl:template>
<xsl:template match="CourseOcc">
<Occurences>
<xsl:for-each select="exchange/cbo/cbo.srs">
<Occur>
<OccurCode><xsl:value-of select="cbo_occl.cbo.srs"/></OccurCode>
</Occur>
</xsl:for-each>
</Occurences>
</xsl:template>
</xsl:stylesheet>
Это выводит:
BUUBMS
BUBSBAT02
USMANG
AJ
FJ
который все очень хорошо, но не то, что я хочу. В идеале я хотел бы выход быть:
<ImportTask>
<Courses>
<Course>BUUBMS-BUBSBAT02-USMANG-AJ</Course>
<Course>BUUBMS-BUBSBAT02-USMANG-FJ<Course>
</Courses>
</ImportTask>
Я предполагаю, что мне нужно больше шаблон кода настройки, но я не знаю точно, что?
Может кто-нибудь указать мне в правильном направлении или сказать мне, есть ли лучший способ?
Большое спасибо
Thanks Leu! Отлично. – Jonah
Не уверен, что я полностью понимаю весь синтаксис, но я могу найти его и работать назад для бит: –
Jonah
Так что, я думаю, следующий вопрос: если мой XML был вложен дальше, скажите, там была другая организация, которая сидела ниже уровня CBO, и мне нужны были отдельные значения от этого объекта, тогда мне нужен еще один шаблон, и этот шаблон будет находиться в первом разделе: xsl: template> –
Jonah