Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
部分XML不';t显示_Xml_Xslt - Fatal编程技术网

部分XML不';t显示

部分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

我有这样一个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 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文件的其他部分?您应该在之前插入新的根。让我更详细地修改这个例子。