2011-11-10 178 views
0

私はXMLクラスに入っています。XMLを使って現在の日付を取得する

クラスがスケジュールに追加される日付をテストして、1964年9月1日以降、現在の日付の前または今日にあることを確認します。

XLSTコード:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:simpleType name="DateAddedType">  
     <xs:restriction base="xs:dateTime">  
      <xs:minInclusive value="1964-09-01T00:00:00" />  
      <!--<xs:assert test="$value le current-date()"/>-->  
      <xs:maxInclusive value="Date.NowT00:00:00"/>  
     </xs:restriction> 
    </xs:simpleType> 

    <xs:simpleType name="DepartmentType">  
     <xs:restriction base="xs:string">  
      <xs:pattern value ="[A-z]{2,5}&amp;?" />  
     </xs:restriction> 
    </xs:simpleType>  

    <xs:simpleType name ="DeptType2">  
     <xs:restriction base="xs:string">  
      <xs:pattern value ="[A-Z][A-Z]|[A-Z][A-Z][A-Z&amp;]|[A-Z][A-Z][A-Z][A-Z&amp;]" />  
     </xs:restriction> 
    </xs:simpleType>  

<xs:element name="Courses">  
    <xs:complexType>  
     <xs:sequence>   
      <xs:element maxOccurs="unbounded" name="Course">   
       <xs:complexType>    
        <xs:sequence>    
         <xs:element name="Department" type="DepartmentType" />    
         <xs:element name="CourseNumber" type="xs:string" />    
         <xs:element name="Title" type="xs:string" />    
         <xs:element name="Description" type="xs:string" />    
         <xs:element name="Credits" type="xs:unsignedByte" />    
         <xs:element minOccurs="0" name="Prerequisites" type="xs:string" /> 
          <xs:element name="DateAdded" type="DateAddedType" />    
         <xs:element minOccurs="0" maxOccurs="unbounded" name="Schedule">  
            <xs:complexType>     
           <xs:sequence>      
            <xs:element name="Season" type="xs:string" /> 
               <xs:element name="Year" type="xs:string" /> 
               <xs:element name="ItemNumber" type="xs:string" />      
            <xs:element name="Department" type="DepartmentType" />      
            <xs:element name="CourseNumber" type="xs:string" />      
            <xs:element name="Section" type="xs:string" />      
            <xs:element name="Room" type="xs:string" />      
            <xs:element name="MeetingDays" type="xs:string" />      
            <xs:element name="StartTime" type="xs:dateTime" />      
            <xs:element name="EndTime" type="xs:dateTime" />     
           </xs:sequence>     
          </xs:complexType>    
         </xs:element>    
        </xs:sequence>   
       </xs:complexType>   
      </xs:element>  
     </xs:sequence>  
    </xs:complexType> 
</xs:element> 
</xs:schema> 

XMLコード:

<?xml version="1.0" encoding="UTF-8"?> 
<Courses xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:noNamespaceSchemaLocation="Courses.xsd"> 
    <Course>  
     <Department>CIS</Department>  
     <CourseNumber>141</CourseNumber>  
     <Title>intro to access</Title>  
     <Description>db stuff</Description>  
     <Credits>5</Credits>  
     <Prerequisites>108, 123</Prerequisites>  
     <DateAdded>2011-07-01T00:00:00</DateAdded> 
    </Course> 
    <Course> 
     <Department>cap</Department> 
     <CourseNumber>102</CourseNumber> 
     <Title>Nutrition for the Food Service Professional</Title> 
     <Description>Nutrition for the Food Service Professional</Description> 
     <Credits>5</Credits> 
     <DateAdded>2001-01-01T00:00:00</DateAdded> 
    </Course> 
    <Course>  
     <Department>cap</Department>  
     <CourseNumber>103</CourseNumber>  
     <Title>Applied Food Service Sanitation</Title>  
     <Description>Applied Food Service Sanitation</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded> 
    </Course> 
    <Course>  
     <Department>cap</Department>  
     <CourseNumber>104</CourseNumber>  
     <Title>Supervision in the Hospitality Industry</Title>  
     <Description>Supervision in the Hospitality Industry</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded> 
    </Course> 
    <Course>  
     <Department>cis</Department>  
     <CourseNumber>145</CourseNumber>  
     <Title>Introduction to access</Title>  
     <Description>Intro to access</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded>  
     <Schedule>  
      <Season>Fall</Season>  
      <Year>2009</Year>  
      <ItemNumber>0000</ItemNumber>  
      <Department>cis</Department>  
      <CourseNumber>145</CourseNumber>  
      <Section>b</Section>  
      <Room>34107</Room>  
      <MeetingDays>daily</MeetingDays>  
      <StartTime>1899-12-30T08:00:00</StartTime>  
      <EndTime>1899-12-30T08:50:00</EndTime>  
     </Schedule>  
     <Schedule>  
      <Season>Winter</Season>  
      <Year>2010</Year>  
      <ItemNumber>1000</ItemNumber>  
      <Department>cis</Department>  
      <CourseNumber>145</CourseNumber>  
      <Section>d</Section>  
      <Room>34106</Room>  
      <MeetingDays>daily</MeetingDays>  
      <StartTime>1899-12-30T10:00:00</StartTime>  
      <EndTime>1899-12-30T10:50:00</EndTime>  
     </Schedule> 
    </Course> 
    <Course>  
     <Department>cis</Department>  
     <CourseNumber>160</CourseNumber>  
     <Title>Introduction to Programming</Title>  
     <Description>Introduction to practices of programming</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded>  
     <Schedule>  
      <Season>Winter</Season>  
      <Year>2010</Year>  
      <ItemNumber>1200</ItemNumber>  
      <Department>cis</Department>  
      <CourseNumber>160</CourseNumber>  
      <Section>e</Section>  
      <Room>34107</Room>  
      <MeetingDays>daily</MeetingDays>  
      <StartTime>1899-12-30T11:00:00</StartTime>  
      <EndTime>1899-12-30T11:50:00</EndTime>  
     </Schedule> 
    </Course> 
    <Course>  
     <Department>cis</Department>  
     <CourseNumber>245</CourseNumber>  
     <Title>Applications in Access</Title>  
     <Description>Developing applications in access</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded>  
     <Schedule>  
      <Season>Winter</Season>  
      <Year>2010</Year>  
      <ItemNumber>1100</ItemNumber>  
      <Department>cis</Department>  
      <CourseNumber>245</CourseNumber>  
      <Section>c</Section>  
      <Room>34128</Room>  
      <MeetingDays>daily</MeetingDays>  
      <StartTime>1899-12-30T09:00:00</StartTime>  
      <EndTime>1899-12-30T09:50:00</EndTime>  
     </Schedule> 
    </Course> 
    <Course>  
     <Department>cis</Department>  
     <CourseNumber>266</CourseNumber>  
     <Title>VB.Net Applications</Title>  
     <Description>Applications in vb.net</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded>  
     <Schedule>  
      <Season>Spring</Season>  
      <Year>2010</Year>  
      <ItemNumber>3525</ItemNumber>  
      <Department>cis</Department>  
      <CourseNumber>266</CourseNumber>  
      <Section>c</Section>  
      <Room>34107</Room>  
      <MeetingDays>daily</MeetingDays>  
      <StartTime>1899-12-30T09:00:00</StartTime>  
      <EndTime>1899-12-30T09:50:00</EndTime>  
     </Schedule> 
    </Course> 
    <Course>  
     <Department>cna</Department>  
     <CourseNumber>250</CourseNumber>  
     <Title>Routing and Switching</Title>  
     <Description>Introduction to Routing and Switching to design, build, and maintain small to medium-size networks.</Description>  
     <Credits>5</Credits>  
     <Prerequisites>cna-145</Prerequisites>  
     <DateAdded>2001-01-01T00:00:00</DateAdded> 
    </Course> 
    <Course>  
     <Department>cna</Department>  
     <CourseNumber>260</CourseNumber>  
     <Title>Windows Scripting</Title>  
     <Description>Windows Scripting</Description>  
     <Credits>5</Credits>  
     <DateAdded>2001-01-01T00:00:00</DateAdded> 
    </Course> 
    <Course>  
     <Department>cs</Department>  
     <CourseNumber>142</CourseNumber>  
     <Title>Object Oriented Programming I</Title>  
     <Description>Object Oriented Programming I</Description>  
     <Credits>5</Credits>  
     <Prerequisites>cis-160, cis-168</Prerequisites>  
     <DateAdded>2001-03-01T00:00:00</DateAdded> 
    </Course> 
</Courses> 

dateAddedフィールドがテストされているものです。 Equivelant to [DateAdded> = 9/1/1964 AND DateAdded < =今日] MinInclusiveを利用して1964年の日付をテストし、今日の日付に対してmaxInclusiveを利用することにしましたが、DTDを使用してスキーマはい、それは愚かですが、それ以来することができます、インストラクターは私たちがそのようにそれをやりたいです。

しかし、彼はDTDファイルを使用するXSLTファイルで検証するXMLファイルの処理方法については説明していません。私たちは、DTDとXMLをXSLTで実行しましたが、3つすべてではありません。

+0

私はそれは、「スキーマを操作するためにDOMを使う」のヒントを推測します。つまり、検証のために変更されたスキーマを使用する前に、現在の日付を含むようにスキーマ自体を変更する必要があります。 DOMを使って行うのは面白いですが、明らかにXSLTの仕事です。 –

+0

私はそれがばかげていることを知っていますが、インストラクターは私たちにそれを与えることを望んでいます。彼は本質的に最も難しいものを学ばせて、同じことを得るより簡単な方法を示しています。加えて、これは余分なクレジットなので、ヒントは少なく、解決するのは難しいです。 –

答えて

1

XSD 1.0では、スキーマをパラメータ化する方法がありません。文書は有効であるか無効であるかのどちらかです。今日は有効で明日は無効です。だからあなたが探していることをする方法はありません。

あなたはアサーションを使用してXSD 1.1でそれを行うことができます。<xs:assert test="$value le current-date()"/>

+0

私はクラスが1.0に固執していると確信しています。そのためインストラクターはDOMを使って操作する必要があると言いました。したがって、私が収集しているものから、xmlファイルのデータはxslファイルによって検証され、dtdファイルはxslファイルの検証を操作してその1つのフィールドの現在の日付を取得し、maxInclusive 。しかし、それを動作させるためにmaxInclusiveに入れるべきものは、dtdファイルです。 –

関連する問題