2017-02-16 85 views
-1

我有XML其中包含多个customItems:XSLT的for-each返回第一个子元素只

<?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失败。

相关问题