部分XML不';t显示
我有这样一个XSL文件。XML文件转换的第一部分,并在Internet Explorer中毫无问题地显示。但当我在文档末尾添加额外内容时,它不会显示在Internet Explorer中。带有部分XML不';t显示,xml,xslt,Xml,Xslt,我有这样一个XSL文件。XML文件转换的第一部分,并在Internet Explorer中毫无问题地显示。但当我在文档末尾添加额外内容时,它不会显示在Internet Explorer中。带有标记的最后一部分未显示。我不知道问题出在哪里 <?xml version='1.0'?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output me
标记的最后一部分未显示。我不知道问题出在哪里
<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<ClientList>
<xsl:for-each select="ClientList/Client">
<Client>
<IdNumber>
<xsl:value-of select="position()"/>
</IdNumber>
<NameSurname>
<xsl:value-of select="concat(Name, ' ' , Surname)"/>
</NameSurname>
</Client>
</xsl:for-each>
</ClientList>
<Number>
<xsl:value-of select="count(/ClientList/Client/ProductOwner[text()='true'])"/>
</Number>
</xsl:template>
</xsl:stylesheet>
这是我的输入XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<ClientList>
<Client>
<Name>Jan</Name>
<Surname>Kowalski</Surname>
<ProductOwner>true</ProductOwner>
</Client>
<Client>
<Name>Piotr</Name>
<Surname>Nowak</Surname>
<ProductOwner>false</ProductOwner>
</Client>
</ClientList>
简
科瓦尔斯基
真的
彼得
诺瓦克
假的
因此,作为对您在评论中的请求的回答(我如何“引入新的根标签,该标签包装了“ClientList”和“Number”)
尝试XSLT“按原样”后,会出现一个错误:
Line: 12
Column: 2
Only one top level element is allowed in an XML document.
添加外部根标记后,样式表应修改如下:
...
<xsl:template match="/">
<new-root> <- open new root tag here
<ClientList>
...
</Number>
</new-root> <- and close it there
</xsl:template>
...
。。。
您的数字标签不应该在关闭客户端标签之前吗?@KeshavGarg如果我在关闭客户端标签之前放置Number
tag,它会工作,但是根据要求Number
标签应该在它之后,这是个问题。@Viola,根据XML标准,您不能有多个根标签。这样,您应该将'Number'标记放在'ClientList'根标记内,或者引入包装'ClientList'和'Number'的新根标记。否则,您的XML格式不正确。@YurySchkatula好的,我如何引入新的根标记来包装“ClientList”和“Number”?我想这可能是决定。我不明白我的标签和你的标签有什么区别。我应该如何更改XSL文件的其他部分?您应该在之前插入新的根。让我更详细地修改这个例子。