2017-02-16 6 views
-1

У меня есть XML, который содержит несколько customItems:XSLT для каждого-возвращающегося первого элемента ребенка только

<?xml version="1.0" ?> 
<root> 
    <customItem> 
     <CustomerName>1Test</CustomerName> 
     <PONumber>321</PONumber> 
     <CustomerProofRequired>true</CustomerProofRequired> 
     <JobType>PVC Banner</JobType> 
     <ArtworkDescription>TestB2Bconvert4</ArtworkDescription> 
     <TrimSizeWidthinmm>5000</TrimSizeWidthinmm> 
     <TrimSizeHeightinmm>6000</TrimSizeHeightinmm> 
     <ChooseMedia>Bsmart PVC 510g</ChooseMedia> 
     <BleedRequired?>true</BleedRequired?> 
     <Replacementartwork?>false</Replacementartwork?> 
     <MultiItemJob>Yes</MultiItemJob> 
     <Quantity>1</Quantity> 
     <SquareMetres>30</SquareMetres> 
     <Price>120</Price> 
    </customItem> 
    <customItem> 
     <CustomerName>1Test</CustomerName> 
     <PONumber>321</PONumber> 
     <CustomerProofRequired>true</CustomerProofRequired> 
     <JobType>Vinyl Print</JobType> 
     <ArtworkDescription>TestB2Bconvert3</ArtworkDescription> 
     <TrimSizeWidthinmm>500</TrimSizeWidthinmm> 
     <TrimSizeHeightinmm>500</TrimSizeHeightinmm> 
     <ChooseMedia>Promotional (Budget Short Term Vinyl)</ChooseMedia> 
     <BleedRequired?>true</BleedRequired?> 
     <Replacementartwork?>false</Replacementartwork?> 
     <MultiItemJob>Yes</MultiItemJob> 
     <Quantity>7</Quantity> 
     <SquareMetres>0.25</SquareMetres> 
     <Price>1.75</Price> 
    </customItem> 
</root> 

Я использую этот XSLT для преобразования его:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" /> 

<xsl:template match="/"> 
<field-list> 


<xsl:for-each select="root/customItem"> 
<field> 
<xsl:value-of select="ArtworkDescription"/> 
</field> 
</xsl:for-each> 

</field-list> 
</xsl:template> 

Но я только получаю первое значение «ArtworkDescription» в результате:

<field-list> 
    <field> 
     TestB2Bconvert4 
    </field> 
</field-list> 

Если удалить некоторые элементы из входного файла:

<?xml version="1.0" ?> 
<root> 
    <customItem> 
     <CustomerName>1Test</CustomerName> 
     <PONumber>321</PONumber> 
     <CustomerProofRequired>true</CustomerProofRequired> 
     <JobType>PVC Banner</JobType> 
     <ArtworkDescription>TestB2Bconvert4</ArtworkDescription> 


    </customItem> 
    <customItem> 
     <CustomerName>1Test</CustomerName> 
     <PONumber>321</PONumber> 
     <CustomerProofRequired>true</CustomerProofRequired> 
     <JobType>Vinyl Print</JobType> 
     <ArtworkDescription>TestB2Bconvert3</ArtworkDescription> 
    </customItem> 
</root> 

Я получаю то, что я ищу:

<field-list> 
    <field> 
     TestB2Bconvert4 
    </field> 
    <field> 
     TestB2Bconvert3 
    </field> 
</field-list> 

Я не могу понять, почему кто-то может мне помочь?

+1

Я не думаю, что ' True' Разрешен XML, поэтому я сомневаюсь, что вы сначала загрузите первый образец в XSLT. –

+0

Хорошо заметили! Он работает, когда я удаляю вопросительные знаки. – James

ответ

0

Я сам отвечаю на этот вопрос, чтобы он мог помочь другим людям с уровня списка прокрутки.

Благодаря Martin Honnen, который заметил, что у меня есть вопросительные знаки в тегах элементов моего входного XML. Они не допускаются в XML и приводят к сбою XSLT.

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