2016-05-08 2 views
1

Мне нужна помощь с XSL и XML-схемой.
Это XML-файл:XML, XSL, XML Schema

<?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 Schema:

<?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>  

Дело в том, когда я APLY мой файл XSL, XML стоп показывая вообще. И я думаю, что моя XML-схема не работает правильно. Мои ограничения также игнорируются.
Что мне делать?

+0

В xml у вас есть 'xmlns =" ​​spels.xml "', в xsd у вас есть 'targetNamespace =" spells.xml "'. Это опечатка? –

+0

Да, это так. Не обращай внимания на это. – stroibot

ответ

0

xsi:schemaLocation="spellsschema.xsd" неправ, вам нужно указать пару urpace и местоположение uri: xsi:schemaLocation="spells.xml spellsschema.xsd".

+0

Я не понимаю. Я сделал это так, как вы сказали, но он по-прежнему игнорирует мои ограничения. Я имею в виду, когда я удаляю атрибут '' category '', например, он все еще показывает normaly, но атрибут' 'category'' является обязательным. Или когда я изменяю атрибут '' кулдаун '', который является' xs: duration' to '' Hello World '', он все еще работает нормально. – stroibot

+0

Ну, вам нужно будет объяснить, как подробно использовать способ проверки вашего XML в отношении схемы, то есть, какой валидирующий парсер или редактор вы используете, поскольку проверка на основе схемы не поддерживается многими анализаторами XML вообще, конечно, не теми Парсеры XML, используемые в браузерах, например. И, конечно, эта опечатка в названии пространства имен имеет значение, если экземпляр XML и схема не имеют одинакового URI пространства имен, любой проверяющий парсер, безусловно, не будет иметь никаких причин для проверки схемы. Поэтому начните с редактирования своего вопроса и исправления проблем и сообщите нам, какое программное обеспечение вы используете для проверки. –