2016-05-08 16 views
1

XSLとXMLスキーマに関する助けが必要です。
これはXMLファイルです:XML、XSL、XMLスキーマ

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="spellstyle.xsl"?> 
<spells xmlns="spels.xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="spellsschema.xsd"> 
<spell category="fire" cooldown="18" manacost="100"> 
    <name>Fire Breath</name> 
    <image id="FireBreath"/> 
    <discription>Some text</discription> 
    <category>Fire</category> 
    <cooldown>18</cooldown> 
    <manacost>100</manacost> 
</spell> 
</spells> 

これは、XMLスキーマである:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="spells.xml" elementFormDefault="qualified"> 
<xs:element name="spells"> 
<xs:complexType> 
    <xs:sequence> 
     <xs:element name="spell"> 
     <xs:attribute name="category" use="required"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:pattern value="fire|water|air|earth"/> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 
     <xs:attribute name="cooldown" type="xs:duration" use="required"/> 
     <xs:attribute name="manacost" type="xs:decimal" use="required"/> 
      <xs:complexType> 
       <xs:sequence> 
        <xs:element name="name" type="xs:string"/> 
        <xs:element name="image"/> 
        <xs:element name="discription" type="xs:string"/> 
        <xs:element name="category" type="xs:string"/> 
        <xs:element name="cooldown" type="xs:duration"/> 
        <xs:element name="manacost" type="xs:decimal"/> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:schema> 

これはXSLです:

<?xml version="1.0" encoding="utf-8"?> 
<!-- DWXMLSource="spells.xml" --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <xsl:for-each select="spells/spell"> 
    <xsl:value-of select="discription"/> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet>  

私は私のXSLファイル、XMLストップをaplyときのものがありますまったく表示しています。私のXMLスキーマも正しく動作していないと思います。私の制限も無視されます。
私は何をしますか?

+0

xmlには 'xmlns =" spels.xml "'があり、xsdには 'targetNamespace =" spells.xml "'があります。それはタイプミスですか? –

+0

はい、そうです。気にしないで。 – stroibot

答えて

0

xsi:schemaLocation="spellsschema.xsd"が間違っている場合は、そこに名前空間uriと場所uriのペアを入れる必要があります:xsi:schemaLocation="spells.xml spellsschema.xsd"

+0

私はそれを取得しません。あなたが言ったように私はこれを作ったが、それでも私の制限を無視する。私が意味することは、属性 "' category "を取り除いても、それはまだ正常に表示されていますが、" "category" 'は必須属性です。あるいは、属性の '' cooldown ''を' xs:duration'に '' Hello World''を変更すると、それは正常に動作します。 – stroibot

+0

さて、スキーマに照らし合わせてXMLを検証する方法を詳しく説明する必要があります。つまり、使用する検証パーサーやエディタは、スキーマベースの検証は多くのXMLパーサではサポートされていませんたとえば、ブラウザで使用されるXMLパーサー。 XMLインスタンスとスキーマが同じ名前空間URIを持たない限り、検証パーサーはスキーマをチェックする理由がありません。まず質問を編集して問題を修正し、検証するソフトウェアを教えてください。 –