空XML拆分出默认XML
我将一个XML传递给XSL,XSL提供标准输出。根据某些情况,有时我可能会将XML设置为空。如果我们有空的XML并在XSL中输出标准或默认值,有什么办法吗 一种方法是检查XSL中是否存在根节点,如果不存在,则打印一些内容空XML拆分出默认XML,xml,xslt,Xml,Xslt,我将一个XML传递给XSL,XSL提供标准输出。根据某些情况,有时我可能会将XML设置为空。如果我们有空的XML并在XSL中输出标准或默认值,有什么办法吗 一种方法是检查XSL中是否存在根节点,如果不存在,则打印一些内容 但是,当我在Perl中尝试tsimiliar thin时,脚本挂起。因此,我认为您必须检查大小,然后应用XSL,如果根标记是空节点集,则应该是这样的 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/19
但是,当我在Perl中尝试tsimiliar thin时,脚本挂起。因此,我认为您必须检查大小,然后应用XSL,如果根标记是空节点集,则应该是这样的
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:choose>
<xsl:when test='*[not(*)]'>
Empty
</xsl:when>
<xsl:otherwise>
Full
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
空的
满满的
。。。如果文件为空(或者至少不包含根元素),XSLT处理器很可能会抛出异常
如果我们有空的XML,有什么办法吗
并获取标准或默认值
放入XSL
永远不能有“空XML”。
根据定义,格式良好的XML文档必须具有top元素。如果对任何格式不正确的XML文档应用XSLT 1.0转换,则任何符合XSLT 1.0的处理器都必须产生错误,并且不会进行任何处理。From
如果fn:doc($uri)返回一个文档
节点,此函数返回true。如果
$uri不是有效的xs:anyURI,是
出现错误[错误:FODC0005]。
否则,该函数返回
错
来自
一种可能的处理模型
功能如下。资源
由URI引用标识的是
恢复。如果资源不能被调用
检索时,会引发错误
[错误:FODC0002]。产生的数据
然后从检索操作开始
解析为XML文档和树
是按照
[XQuery 1.0和XPath 2.0数据模型]。
如果顶级媒体类型已知
并且是“文本”,内容被解析
与媒体类型相同
为文本/xml;否则,它将被解析
与媒体类型相同
我们使用了application/xml。如果内容
无法成功分析,原因是
出现错误[错误:FODC0002]。
否则,函数的结果
文档节点是否位于
生成的树。这棵树是
根据模式进行可选验证
所以,看起来你可以这样做(我很谨慎,因为“一种可能的处理模式”这个词):
此样式表:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pURI" select="'B.xml'"/>
<xsl:template match="/">
<DefaultResult>
<xsl:if test="doc-available($pURI)">
<xsl:apply-templates select="doc($pURI)/*"/>
</xsl:if>
</DefaultResult>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
以及此替代信息:
Error on line 1 column 1 of B.xml:
SXXP0003: Error reported by XML parser: Premature end of file.
Altova输出:
<DefaultResult>
<Entry type="Folder">
<Name/>
<Date/>
<Info>
<URI>B.xml</URI>
<Comment/>
<Files>0</Files>
<CompressedSize>0</CompressedSize>
<UncompressedSize>0</UncompressedSize>
<Ratio>0</Ratio>
<ContainsEncryptedFiles>false</ContainsEncryptedFiles>
</Info>
</Entry>
</DefaultResult>
B.xml
0
0
0
0
假的
空是什么意思?是0字节还是空根元素?
<DefaultResult>
<Entry type="Folder">
<Name/>
<Date/>
<Info>
<URI>B.xml</URI>
<Comment/>
<Files>0</Files>
<CompressedSize>0</CompressedSize>
<UncompressedSize>0</UncompressedSize>
<Ratio>0</Ratio>
<ContainsEncryptedFiles>false</ContainsEncryptedFiles>
</Info>
</Entry>
</DefaultResult>