xsl,xsd,xml之间的统一使用的难题,求帮助

齐晓斌 发布于 2013/04/15 22:34
阅读 961
收藏 0
我的需求:
xml文件(简单的几个节点,其余都类似):
<?xml version="1.0" encoding="UTF-8"?>
<KernelConfig  description="MicroKernel Configuration" 
     xmlns="http://www.actri.avic/sysconfig"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmi:schemaLocation="http://www.actri.avic/sysconfig AMCR_config.xsd">
     <MainArchtecture  description="Main Arch"
            ARCH_ARM="y"/>
</KernelConfig>

对应的样式文件AMCR_config.xsd的头:
<?xml version="1.0" encoding="US-ASCII"?>
<xs:schema 
       xmlns="http://www.actri.avic/sysconfig"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://www.actri.avic/sysconfig"
       elementFormDefault="qualified"
       attributeFormDefault="unqualified"/>


用于转换xml文件的xsl文件的头:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0">
<xsl:output  method="text"/>
    <xsl:template  match="/">
           <xsl:value-of select="KernelConfig/@description"/>
    <xsl:apply-template>
    </xsl:template>
<xsl:template  match="KernelConfig">
     <xsl:for-each select="node()">
     <xsl:for-each select=".">
           <xsl:for-each select="@*">
#define Config_<xsl:for-each select="name()"/> 1
            </xsl:for-each> 
       </xsl:for-each> 
    < /xs l:for-each> 
 <xsl:apply-template/>
</xsl:template>

问题:现在xsd可以正常约束控制上面的这个xml文件,但是下面的xsl文件无法正常转换为相应的源文件,出现转换异常;但是当把xml文件中的xmlns="http://www.actri.avic/sysconfig"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmi:schemaLocation="http://www.actri.avic/sysconfig AMCR_config.xsd"去掉后,可以正常转换,当然,但是那样后,xsd就无法控制约束xml,怎么样才能三者统一结合?即:xsd可以控制约束xml,xsl又可以正常转换xml为源文件;


  
加载中
返回顶部
顶部