2012-03-31 2 views
0

모두 3을 참조하는 데 어려움이 있습니다. XML, XSD 및 XSL을 이미 작성했지만 참조와 함께 작동하지 않습니다. 다음은 동일한 참조를 사용하는 간단한 예입니다.XML XSL XSD 유효성 검사 :

XSD :

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.w3schools.com" 
    xmlns="http://www.w3schools.com" 
    elementFormDefault="qualified"> 

    <xs:element name="email"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="to" type="xs:string"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

</xs:schema> 

XML :

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="email.xsl"?> 

<email 
    xmlns="http://www.w3schools.com" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3schools.com email.xsd"> 

    <to>John</to> 
</email> 

XSL :

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:template match="/"> 
    <html> 
     <body> 
     <xsl:for-each select="email"> 
      <h2>To</h2> 
      <td><xsl:value-of select="John"/></td> 
     </xsl:for-each> 
     </body> 
    </html> 
    </xsl:template> 

</xsl:stylesheet> 
+0

그래서 무엇이 문제입니까? 나는 하나도 보지 못한다. 문제가 무엇입니까? 문제가되는 것으로 알려진 것은 없습니다. –

답변

3

XSLT이 email 요소는 네임 스페이스를 가지고 있기 때문에 작동하지 않습니다와와 요소를 일치 네임 스페이스는 XPath를 사용하여 명시 적으로 접두어를 선언하고 사용해야합니다.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ws="http://www.w3schools.com" 
    version="1.0"> 

    <xsl:template match="/"> 
    <html> 
     <body> 
     <xsl:for-each select="ws:email"> 
      <h2>To</h2> 
      <td><xsl:value-of select="ws:to"/></td> 
     </xsl:for-each> 
     </body> 
    </html> 

    </xsl:template> 

난 당신이 XSD에서 기대하고있는 것을 확실하지 않다 :

는이 같은 XSL을 쓸 필요가 올바른 것 같다,하지만 어떤 식 으로든 영향을주지 않습니다 XSLT의 응용 프로그램.

email은 XML의 루트 요소이므로 XML 파일 당 하나의 email 요소 만 가질 수 있습니다. 아마도 위에 다른 루트 요소가 있어야합니다.

표 안의 <td> 인 모호한 HTML을 생성한다는 점에 유의하십시오.

+0

감사합니다! – John

관련 문제