2015-04-13 2 views
1

Я собирал XSL с помощью предыдущей публикации для преобразования некоторого XML. Теперь у меня есть XSL вывод правильных данных, но у меня две проблемы. 1) У меня есть некоторый дополнительный текст отображается, что я не хочу, чтобы каждый тег предшествует такие как:XSL-преобразование XML - нежелательный дополнительный текст, отображаемый

BUUBIF 
BUBSBAT02 
USBIFA 

2) Мой цикл не совсем корректно. Тег должен инкапсулировать каждую итерацию содержания

<CourseCode/> 
<Version/> 
<EndDate/> 
<PrimaryDisciplineCode/> 
<StartDate/> 
<Description/> 
<FacultyCode/> 

Моего XML имеют некоторые курсовые данные, что петли через два связанных записи, то на следующий курс, поэтому с точкой зрения субъектов она должна перебрать VCO, СКИ, СКИ, и затем начните снова.

Мой XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<exchange> 
<vco> 
<vco.srs> 
<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs> 
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs> 
<vco_rouc.vco.srs>USBIFI</vco_rouc.vco.srs> 
<cbo> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
</cbo> 
</vco.srs> 
<vco.srs> 
<vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs> 
<vco_prgc.vco.srs>BUBSBAT02</vco_prgc.vco.srs> 
<vco_rouc.vco.srs>USBIFA</vco_rouc.vco.srs> 
<cbo> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>AJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
<cbo.srs> 
<cbo_occl.cbo.srs>FJ</cbo_occl.cbo.srs> 
<crs> 
<crs.srs> 
<crs_titl.crs.srs>BSc Banking &amp; Int Finance</crs_titl.crs.srs> 
<crs_dptc.crs.srs>B</crs_dptc.crs.srs> 
<crs_begd.crs.srs>2003-08-01</crs_begd.crs.srs> 
</crs.srs> 
</crs> 
</cbo.srs> 
</cbo> 
</vco.srs> 
</vco> 
</exchange> 

Мой XSL

   <?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0"> 
<xsl:output indent="yes" method="xml"/> 
<xsl:template match="/exchange"> 
<ImportTask> 
<CourseVersions> 
<CourseVersion> 
<xsl:apply-templates select="*|@*"/> 
</CourseVersion> 
</CourseVersions> 
</ImportTask> 
</xsl:template> 

<xsl:template match="cbo_occl.cbo.srs"> 
<CourseCode> 
<!-- select all text-Nodes of vco_* elements --> 
<xsl:for-each select="../../../*[matches(name(),'^vco_.*')]/text()"> 
<xsl:value-of select="concat(.,'-')"/> 
</xsl:for-each> 
<xsl:value-of select="."/> 
</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 
</xsl:template> 

<xsl:template match="crs/crs.srs"> 
<xsl:for-each select="exchange/crs/crs.srs"> 
</xsl:for-each> 
<StartDate><xsl:value-of select="crs_begd.crs.srs"/></StartDate> 
<Description><xsl:value-of select="crs_titl.crs.srs"/></Description> 
<FacultyCode><xsl:value-of select="crs_dptc.crs.srs"/></FacultyCode> 

</xsl:template> 

</xsl:stylesheet> 

Так что это дает мне выход:

<?xml version="1.0" encoding="UTF-8"?> 
<ImportTask> 
<CourseVersions> 
<CourseVersion> 

BUUBIF 
BUBSBAT02 
USBIFI 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFI-FJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

BUUBIF 
BUBSBAT02 
USBIFA 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-AJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

<CourseCode>BUUBIF-BUBSBAT02-USBIFA-FJ</CourseCode> 
<Version>1</Version> 
<EndDate>i:nil="true"</EndDate> 
<PrimaryDisciplineCode>i:nil="true"</PrimaryDisciplineCode> 

<StartDate>2003-08-01</StartDate> 
<Description>BSc Banking &amp; Int Finance</Description> 
<FacultyCode>B</FacultyCode> 

    </CourseVersion> 
</CourseVersions> 
</ImportTask> 

Большое спасибо

Ионы

ответ

2

С <xsl:apply-templates select="*|@*"/> вы обрабатываете все атрибуты и дочерние узлы, а это значит, что, например, <vco_crsc.vco.srs>BUUBIF</vco_crsc.vco.srs> обрабатывается встроенными шаблонами, которые, наконец, выводят все текстовые узлы.

Так что либо добавить <xsl:template match="text()"/>, чтобы избежать того, чтобы создать текстовые узлы вывода или изменить apply-templates обработать только два элемента, для которого вы написали шаблоны: <xsl:apply-templates select="//cbo_occl.cbo.srs | //crs/crs.srs"/>.

+0

Спасибо Мартин. Это разобралось в моем форматировании. Я не был уверен в синтаксисе для вызова двух шаблонов, но ваш «" это то, чем я был. У меня будет еще один способ получить мой цикл прямо сейчас, поскольку я хочу поместить каждый в , но на данный момент я помещаю весь контент между тегами Jonah

+0

Выполнено, спасибо за помощь – Jonah

+0

Jonah

Смежные вопросы