2010-12-23 73 views
0

我該如何編寫一個XML模式,其中元素將被允許與其他命名空間的元素混合使用?將XML命名空間與XHTML混合使用

具體來說,如果我想使用的模板一些元素XHTML文檔中這樣:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tmp="http://www.example.com/~/template"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 

    <div id="idName"> 

     <tmp:region name="regionName"> 

      <div class="className"> 

       <h1> 
        <tmp:data name="dataName1"> 
         <tmp:format type="formatType"> 
          <tmp:param name="paramName" value="paramValue" /> 
          <tmp:param name="paramName" value="paramValue" /> 
         </tmp:format> 
        </tmp:data> 
       </h1> 

       <div> 
        <tmp:data name="dataName2" /> 
       </div> 

      </div> 

     </tmp:region> 

    </div> 

</body> 

</html> 

我不想讓任何人寫的模式,我在這樣做之中(我認爲是正確的)但如前所述,如何確保tmp命名空間中的元素可以像示例中所示那樣使用?我需要在XSD或其他地方包含或省略什麼?

回答

1

如果您想要的任何地方,你可以使用xs:any

<xs:any processContent="skip" namespace="http://www.foo.com/hello/world"/> 

...允許任何元素從所提供的命名空間,例如。

+0

謝謝** lstao **;這隻會允許來自提供的名稱空間的元素,或者(我將如何)能夠包含任何格式正確的元素? ```元素可以(應該)包含來自`tmp`命名空間和其他人(特別是`XHTML`)的任意數量的子元素。另外,我現在明白XHTML 1.0不允許有效的文檔將外部命名空間與XHTML混合使用。我最好是將文檔編寫爲XML,然後再使用XSLT之類的方法對其進行轉換? – Dan 2010-12-24 16:05:45