• R/O
  • SSH

JinArchiver: Commit

JinArchiverは、人狼BBSの過去ログを独自のXML形式でローカルディスクに保存するためのツールです。


Commit MetaInfo

Revision1b9ee7c7c2e8f1acf04eda766a163b97f9cd6086 (tree)
Time2016-06-30 00:42:19
Author <olyutorskii@user...>

Log Message

XML外部リソースのリダイレクト

Change Summary

Incremental Difference

diff -r 3691ae45117b -r 1b9ee7c7c2e8 CHANGELOG.txt
--- a/CHANGELOG.txt Wed Jun 29 19:02:35 2016 +0900
+++ b/CHANGELOG.txt Thu Jun 30 00:42:19 2016 +0900
@@ -8,6 +8,8 @@
88 ・必須環境をJRE7に引き上げ。
99 ・Mavenプラグイン更新。
1010 ・OSDN.JP対応。
11+ ・<rawdata>タグ出力の修正。(バグ#36356)
12+ ・XML検証タスクが外部リソースにアクセスしないようになった。
1113
1214 1.502.2 (2011-04-21)
1315 ・110421版スキーマに対応。
diff -r 3691ae45117b -r 1b9ee7c7c2e8 src/main/java/jp/sourceforge/jindolf/archiver/JinArchiver.java
--- a/src/main/java/jp/sourceforge/jindolf/archiver/JinArchiver.java Wed Jun 29 19:02:35 2016 +0900
+++ b/src/main/java/jp/sourceforge/jindolf/archiver/JinArchiver.java Thu Jun 30 00:42:19 2016 +0900
@@ -26,6 +26,7 @@
2626 import jp.sourceforge.jindolf.corelib.LandDef;
2727 import jp.sourceforge.jindolf.parser.DecodeException;
2828 import jp.sourceforge.jindolf.parser.HtmlParseException;
29+import org.w3c.dom.ls.LSResourceResolver;
2930 import org.xml.sax.SAXException;
3031
3132 /**
@@ -171,6 +172,9 @@
171172 return;
172173 }
173174
175+ LSResourceResolver resolver = new XmlResolver();
176+ validator.setResourceResolver(resolver);
177+
174178 Writer writer;
175179 if(outdir != null){
176180 writer = getFileWriter(outdir, landDef, vid);
diff -r 3691ae45117b -r 1b9ee7c7c2e8 src/main/java/jp/sourceforge/jindolf/archiver/XmlResolver.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/sourceforge/jindolf/archiver/XmlResolver.java Thu Jun 30 00:42:19 2016 +0900
@@ -0,0 +1,249 @@
1+/*
2+ * XML resource resolver
3+ *
4+ * License : The MIT License
5+ * Copyright(c) 2016 olyutorskii
6+ */
7+
8+package jp.sourceforge.jindolf.archiver;
9+
10+import java.io.IOException;
11+import java.io.InputStream;
12+import java.net.MalformedURLException;
13+import java.net.URI;
14+import java.net.URISyntaxException;
15+import java.net.URL;
16+import java.util.HashMap;
17+import java.util.Map;
18+import javax.xml.parsers.DocumentBuilder;
19+import javax.xml.parsers.DocumentBuilderFactory;
20+import javax.xml.parsers.ParserConfigurationException;
21+import org.w3c.dom.DOMImplementation;
22+import org.w3c.dom.ls.DOMImplementationLS;
23+import org.w3c.dom.ls.LSInput;
24+import org.w3c.dom.ls.LSResourceResolver;
25+
26+/**
27+ * XML各種外部リソースの解決。
28+ */
29+public class XmlResolver implements LSResourceResolver{
30+
31+ private static final String RES_XMLXSD =
32+ "resources/xmldummy.xsd";
33+ private static final String RES_COREXSD =
34+ "resources/coreType-090929.xsd";
35+ private static final String RES_BBSXSD =
36+ "resources/bbsArchive-110421.xsd";
37+ private static final String RES_BBSDTD =
38+ "resources/bbsArchive-110421.dtd";
39+
40+ private static final String URI_XMLXSD =
41+ "http://www.w3.org/2001/xml.xsd";
42+ private static final String URI_COREXSD =
43+ "http://jindolf.sourceforge.jp/xml/xsd/coreType-090929.xsd";
44+ private static final String URI_BBSXSD =
45+ "http://jindolf.sourceforge.jp/xml/xsd/bbsArchive-110421.xsd";
46+ private static final String URI_BBSDTD =
47+ "http://jindolf.sourceforge.jp/xml/dtd/bbsArchive-110421.dtd";
48+
49+ private static final DOMImplementationLS DOM_LS;
50+
51+ static{
52+ try{
53+ DOM_LS = buildDomImplLS();
54+ }catch(ParserConfigurationException e){
55+ throw new ExceptionInInitializerError(e);
56+ }
57+ }
58+
59+
60+ private final Map<URI, URI> uriMap;
61+
62+
63+ /**
64+ * コンストラクタ。
65+ */
66+ public XmlResolver(){
67+ super();
68+
69+ this.uriMap = new HashMap<>();
70+
71+ setUriMap();
72+
73+ return;
74+ }
75+
76+
77+ /**
78+ * DOMImplementationLS実装を生成する。
79+ * @return DOMImplementationLS実装
80+ * @throws ParserConfigurationException XML実装が満たされない
81+ */
82+ private static DOMImplementationLS buildDomImplLS()
83+ throws ParserConfigurationException{
84+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
85+ DocumentBuilder builder = factory.newDocumentBuilder();
86+ DOMImplementation domImp = builder.getDOMImplementation();
87+
88+ Object feature = domImp.getFeature("LS", "3.0");
89+ assert feature instanceof DOMImplementationLS;
90+
91+ DOMImplementationLS result;
92+ result = (DOMImplementationLS) feature;
93+
94+ return result;
95+ }
96+
97+ /**
98+ * 絶対URIと相対URIを合成したURIを返す。
99+ * 正規化も行われる。
100+ * @param base 絶対URIでなければならない。nullでもよい。
101+ * @param relative 絶対URIでもよいがその場合baseは無視される。null可。
102+ * @return 合成結果のURLオブジェクト。必ず絶対URIになる。
103+ * @throws java.net.URISyntaxException URIとして変。
104+ * @throws java.lang.IllegalArgumentException 絶対URIが生成できない。
105+ */
106+ public static URI buildBaseRelativeURI(String base, String relative)
107+ throws URISyntaxException,
108+ IllegalArgumentException {
109+ URI baseURI;
110+ if(base != null){
111+ baseURI = new URI(base);
112+ if( ! baseURI.isAbsolute() ){
113+ throw new IllegalArgumentException();
114+ }
115+ }else{
116+ baseURI = null;
117+ }
118+
119+ URI relativeURI;
120+ if(relative != null){
121+ relativeURI = new URI(relative);
122+ }else{
123+ relativeURI = URI.create("");
124+ }
125+
126+ URI resultURI;
127+ if(baseURI == null || relativeURI.isAbsolute()){
128+ resultURI = relativeURI;
129+ }else{
130+ resultURI = baseURI.resolve(relativeURI);
131+ }
132+
133+ if( ! resultURI.isAbsolute() ){
134+ throw new IllegalArgumentException();
135+ }
136+
137+ resultURI = resultURI.normalize();
138+
139+ return resultURI;
140+ }
141+
142+
143+ /**
144+ * 置換マップを設定する。
145+ */
146+ private void setUriMap(){
147+
148+ try{
149+ putMap(URI_BBSDTD, RES_BBSDTD);
150+ putMap(URI_BBSXSD, RES_BBSXSD);
151+ putMap(URI_COREXSD, RES_COREXSD);
152+ putMap(URI_XMLXSD, RES_XMLXSD);
153+ }catch(URISyntaxException e){
154+ assert false;
155+ return;
156+ }
157+
158+ return;
159+ }
160+
161+ /**
162+ * 置換マップを設定する。
163+ * @param uri オリジナルURI
164+ * @param resource リソース名
165+ * @throws URISyntaxException URIが変
166+ */
167+ private void putMap(String uri, String resource)
168+ throws URISyntaxException{
169+ URI orig = new URI(uri);
170+
171+ Class<?> klass = getClass();
172+ URL resUrl = klass.getResource(resource);
173+ URI resUri = resUrl.toURI();
174+
175+ orig = orig.normalize();
176+ resUri = resUri.normalize();
177+
178+ this.uriMap.put(orig, resUri);
179+
180+ return;
181+ }
182+
183+ /**
184+ * URIを解決する。
185+ * @param origUri オリジナルURI
186+ * @return 解決リソースへのURI
187+ */
188+ private URI resolveMap(URI origUri){
189+ URI key = origUri.normalize();
190+ URI result = this.uriMap.get(key);
191+
192+ if(result == null) result = origUri;
193+
194+ return result;
195+ }
196+
197+ /**
198+ * {@inheritDoc}
199+ * @param type {@inheritDoc}
200+ * @param namespaceURI {@inheritDoc}
201+ * @param publicId {@inheritDoc}
202+ * @param systemId {@inheritDoc}
203+ * @param baseURI {@inheritDoc}
204+ * @return {@inheritDoc}
205+ */
206+ @Override
207+ public LSInput resolveResource(String type,
208+ String namespaceURI,
209+ String publicId,
210+ String systemId,
211+ String baseURI ){
212+ URI origUri;
213+ try{
214+ origUri = buildBaseRelativeURI(baseURI, systemId);
215+ }catch(URISyntaxException e){
216+ assert false;
217+ return null;
218+ }
219+
220+ URI resourceUri = resolveMap(origUri);
221+
222+ URL resourceUrl;
223+ try{
224+ resourceUrl = resourceUri.toURL();
225+ }catch(MalformedURLException e){
226+ assert false;
227+ return null;
228+ }
229+
230+ InputStream resourceStream;
231+ try{
232+ resourceStream = resourceUrl.openStream();
233+ }catch(IOException e){
234+ assert false;
235+ return null;
236+ }
237+
238+ LSInput result = DOM_LS.createLSInput();
239+
240+ result.setBaseURI(baseURI);
241+ result.setPublicId(publicId);
242+ result.setSystemId(systemId);
243+
244+ result.setByteStream(resourceStream);
245+
246+ return result;
247+ }
248+
249+}
diff -r 3691ae45117b -r 1b9ee7c7c2e8 src/main/resources/jp/sourceforge/jindolf/archiver/resources/bbsArchive-110421.dtd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/resources/jp/sourceforge/jindolf/archiver/resources/bbsArchive-110421.dtd Thu Jun 30 00:42:19 2016 +0900
@@ -0,0 +1,337 @@
1+<!--
2+
3+人狼BBS 共通アーカイブ基盤用 DTD定義
4+
5+by olyutorskii [ http://sourceforge.jp/users/olyutorskii/ ]
6+License : The MIT License
7+※ カタログ化はご自由に
8+
9+Copyright(c) 2009 olyutorskii
10+
11+-->
12+
13+<!ENTITY % announceElems "
14+ startEntry
15+| onStage
16+| startMirror
17+| openRole
18+| murdered
19+| startAssault
20+| survivor
21+| counting
22+| suddenDeath
23+| noMurder
24+| winVillage
25+| winWolf
26+| winHamster
27+| playerList
28+| panic
29+| execution
30+| vanish
31+| checkout
32+| shortMember
33+" >
34+
35+<!ENTITY % orderElems "
36+ askEntry
37+| askCommit
38+| noComment
39+| stayEpilogue
40+| gameOver
41+" >
42+
43+<!ENTITY % extraElems "
44+ judge
45+| guard
46+| counting2
47+| assault
48+" >
49+
50+<!ENTITY % systemEvent " %announceElems; | %orderElems; | %extraElems; " >
51+
52+<!ENTITY % EventFamily " announce | order | extra " >
53+<!ENTITY % announceAttrs "eventFamily (%EventFamily;) #FIXED 'announce'" >
54+<!ENTITY % orderAttrs "eventFamily (%EventFamily;) #FIXED 'order'" >
55+<!ENTITY % extraAttrs "eventFamily (%EventFamily;) #FIXED 'extra'" >
56+
57+<!ENTITY % VillageState " prologue | progress | epilogue | gameover " >
58+<!ENTITY % DisclosureType " hot | uncomplete | complete " >
59+<!ENTITY % PeriodType " prologue | progress | epilogue " >
60+<!ENTITY % Team " village | wolf | hamster " >
61+<!ENTITY % TalkType " public | wolf | private| grave " >
62+<!ENTITY % Role "
63+ innocent
64+| wolf
65+| seer
66+| shaman
67+| madman
68+| hunter
69+| frater
70+| hamster
71+" >
72+
73+
74+<!-- #################################################################### -->
75+
76+
77+<!ELEMENT village (avatarList, period*) >
78+<!ATTLIST village
79+ xmlns CDATA #REQUIRED
80+ xmlns:xsi CDATA #REQUIRED
81+ xsi:schemaLocation CDATA #REQUIRED
82+ xml:lang CDATA "ja-JP"
83+ xml:base CDATA #REQUIRED
84+ xml:space (default|preserve) "preserve"
85+ fullName CDATA #REQUIRED
86+ vid CDATA #REQUIRED
87+ commitTime CDATA #IMPLIED
88+ state (%VillageState;) #REQUIRED
89+ disclosure (%DisclosureType;) "complete"
90+ isValid ( true | false | 1 | 0 ) "true"
91+ landName CDATA #REQUIRED
92+ formalName CDATA #REQUIRED
93+ landId CDATA #REQUIRED
94+ landPrefix CDATA #REQUIRED
95+ locale CDATA "ja-JP"
96+ origencoding CDATA "Shift_JIS"
97+ timezone CDATA "GMT+09:00"
98+ graveIconURI CDATA #REQUIRED
99+ generator CDATA #IMPLIED
100+>
101+
102+<!ELEMENT avatarList (avatar*) >
103+
104+<!ELEMENT avatar EMPTY >
105+<!ATTLIST avatar
106+ avatarId CDATA #REQUIRED
107+ fullName CDATA #REQUIRED
108+ shortName CDATA #REQUIRED
109+ faceIconURI CDATA #IMPLIED
110+>
111+
112+<!ELEMENT period ( talk | %systemEvent; )* >
113+<!ATTLIST period
114+ type (%PeriodType;) #REQUIRED
115+ day CDATA #REQUIRED
116+ disclosure (%DisclosureType;) "complete"
117+ nextCommitDay CDATA #REQUIRED
118+ commitTime CDATA #REQUIRED
119+ sourceURI CDATA #REQUIRED
120+ loadedTime CDATA #IMPLIED
121+ loadedBy CDATA #IMPLIED
122+>
123+
124+<!ELEMENT talk (li)* >
125+<!ATTLIST talk
126+ type (%TalkType;) #REQUIRED
127+ avatarId CDATA #REQUIRED
128+ xname CDATA #REQUIRED
129+ time CDATA #REQUIRED
130+ faceIconURI CDATA #IMPLIED
131+>
132+
133+<!ELEMENT li (#PCDATA|rawdata)* >
134+<!ATTLIST li xml:space (default|preserve) "preserve" >
135+
136+<!ELEMENT rawdata (#PCDATA) >
137+<!ATTLIST rawdata
138+ encoding CDATA #REQUIRED
139+ hexBin CDATA #REQUIRED
140+>
141+
142+<!ELEMENT avatarRef EMPTY >
143+<!ATTLIST avatarRef
144+ avatarId CDATA #REQUIRED
145+>
146+
147+<!ELEMENT startEntry (li)* >
148+<!ATTLIST startEntry
149+ %announceAttrs;
150+>
151+
152+<!ELEMENT onStage (li)* >
153+<!ATTLIST onStage
154+ %announceAttrs;
155+ entryNo CDATA #REQUIRED
156+ avatarId CDATA #REQUIRED
157+>
158+
159+<!ELEMENT startMirror (li)* >
160+<!ATTLIST startMirror
161+ %announceAttrs;
162+>
163+
164+<!ELEMENT roleHeads EMPTY >
165+<!ATTLIST roleHeads
166+ role (%Role;) #REQUIRED
167+ heads CDATA #REQUIRED
168+>
169+
170+<!ELEMENT openRole (li*, roleHeads+) >
171+<!ATTLIST openRole
172+ %announceAttrs;
173+>
174+
175+<!ELEMENT murdered (li*, avatarRef+) >
176+<!ATTLIST murdered
177+ %announceAttrs;
178+>
179+
180+<!ELEMENT startAssault (li)* >
181+<!ATTLIST startAssault
182+ %announceAttrs;
183+>
184+
185+<!ELEMENT survivor (li*, avatarRef+) >
186+<!ATTLIST survivor
187+ %announceAttrs;
188+>
189+
190+<!ELEMENT vote EMPTY >
191+<!ATTLIST vote
192+ byWhom CDATA #REQUIRED
193+ target CDATA #REQUIRED
194+>
195+
196+<!ELEMENT counting (li*, vote+) >
197+<!ATTLIST counting
198+ %announceAttrs;
199+ victim CDATA #IMPLIED
200+>
201+
202+<!ELEMENT suddenDeath (li)* >
203+<!ATTLIST suddenDeath
204+ %announceAttrs;
205+ avatarId CDATA #REQUIRED
206+>
207+
208+<!ELEMENT noMurder (li)* >
209+<!ATTLIST noMurder
210+ %announceAttrs;
211+>
212+
213+<!ELEMENT winVillage (li)* >
214+<!ATTLIST winVillage
215+ %announceAttrs;
216+>
217+
218+<!ELEMENT winWolf (li)* >
219+<!ATTLIST winWolf
220+ %announceAttrs;
221+>
222+
223+<!ELEMENT winHamster (li)* >
224+<!ATTLIST winHamster
225+ %announceAttrs;
226+>
227+
228+<!ELEMENT playerInfo EMPTY >
229+<!ATTLIST playerInfo
230+ playerId CDATA #REQUIRED
231+ avatarId CDATA #REQUIRED
232+ survive ( true | false | 1 | 0 ) #REQUIRED
233+ role (%Role;) #REQUIRED
234+ uri CDATA #IMPLIED
235+>
236+
237+<!ELEMENT playerList (li*, playerInfo+) >
238+<!ATTLIST playerList
239+ %announceAttrs;
240+>
241+
242+<!ELEMENT panic (li)* >
243+<!ATTLIST panic
244+ %announceAttrs;
245+>
246+
247+<!ELEMENT nominated EMPTY >
248+<!ATTLIST nominated
249+ avatarId CDATA #REQUIRED
250+ count CDATA #REQUIRED
251+>
252+
253+<!ELEMENT execution (li*, nominated+) >
254+<!ATTLIST execution
255+ %announceAttrs;
256+ victim CDATA #IMPLIED
257+>
258+
259+<!ELEMENT vanish (li)* >
260+<!ATTLIST vanish
261+ %announceAttrs;
262+ avatarId CDATA #REQUIRED
263+>
264+
265+<!ELEMENT checkout (li)* >
266+<!ATTLIST checkout
267+ %announceAttrs;
268+ avatarId CDATA #REQUIRED
269+>
270+
271+<!ELEMENT shortMember (li)* >
272+<!ATTLIST shortMember
273+ %announceAttrs;
274+>
275+
276+<!ELEMENT askEntry (li)* >
277+<!ATTLIST askEntry
278+ %orderAttrs;
279+ commitTime CDATA #REQUIRED
280+ minMembers CDATA #REQUIRED
281+ maxMembers CDATA #REQUIRED
282+>
283+
284+<!ELEMENT askCommit (li)* >
285+<!ATTLIST askCommit
286+ %orderAttrs;
287+ limitVote CDATA #REQUIRED
288+ limitSpecial CDATA #REQUIRED
289+>
290+
291+<!ELEMENT noComment (li*, avatarRef+) >
292+<!ATTLIST noComment
293+ %orderAttrs;
294+>
295+
296+<!ELEMENT stayEpilogue (li)* >
297+<!ATTLIST stayEpilogue
298+ %orderAttrs;
299+ winner (%Team;) #REQUIRED
300+ limitTime CDATA #REQUIRED
301+>
302+
303+<!ELEMENT gameOver (li)* >
304+<!ATTLIST gameOver
305+ %orderAttrs;
306+>
307+
308+<!ELEMENT judge (li)* >
309+<!ATTLIST judge
310+ %extraAttrs;
311+ byWhom CDATA #REQUIRED
312+ target CDATA #REQUIRED
313+>
314+
315+<!ELEMENT guard (li)* >
316+<!ATTLIST guard
317+ %extraAttrs;
318+ byWhom CDATA #REQUIRED
319+ target CDATA #REQUIRED
320+>
321+
322+<!ELEMENT counting2 (li*, vote+) >
323+<!ATTLIST counting2
324+ %extraAttrs;
325+>
326+
327+<!ELEMENT assault (li)* >
328+<!ATTLIST assault
329+ %extraAttrs;
330+ byWhom CDATA #REQUIRED
331+ target CDATA #REQUIRED
332+ xname CDATA #REQUIRED
333+ time CDATA #REQUIRED
334+ faceIconURI CDATA #IMPLIED
335+>
336+
337+<!-- EOF -->
diff -r 3691ae45117b -r 1b9ee7c7c2e8 src/main/resources/jp/sourceforge/jindolf/archiver/resources/bbsArchive-110421.xsd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/resources/jp/sourceforge/jindolf/archiver/resources/bbsArchive-110421.xsd Thu Jun 30 00:42:19 2016 +0900
@@ -0,0 +1,1529 @@
1+<?xml version="1.0" encoding="UTF-8" ?>
2+
3+<xsd:schema
4+ xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
5+ xmlns:core ="http://jindolf.sourceforge.jp/xml/ns/401"
6+ xmlns:tns ="http://jindolf.sourceforge.jp/xml/ns/501"
7+ targetNamespace="http://jindolf.sourceforge.jp/xml/ns/501"
8+ elementFormDefault="qualified"
9+ xml:lang="ja-JP"
10+ version="225"
11+>
12+
13+ <xsd:annotation>
14+<xsd:documentation><![CDATA[
15+############################################################################
16+
17+人狼BBS 共通アーカイブ基盤用 スキーム定義
18+
19+by olyutorskii [ http://sourceforge.jp/users/olyutorskii/ ]
20+License : The MIT License
21+※ カタログ化はご自由に
22+
23+Copyright(c) 2009 olyutorskii
24+
25+############################################################################
26+]]></xsd:documentation>
27+ </xsd:annotation>
28+
29+
30+ <xsd:import
31+ namespace="http://www.w3.org/XML/1998/namespace"
32+ schemaLocation="http://www.w3.org/2001/xml.xsd"
33+ />
34+
35+ <xsd:import
36+ namespace="http://jindolf.sourceforge.jp/xml/ns/401"
37+ schemaLocation="http://jindolf.sourceforge.jp/xml/xsd/coreType-090929.xsd"
38+ />
39+
40+
41+<!-- 各種複合型定義 ################################ -->
42+
43+ <!-- ================================================================ -->
44+
45+ <xsd:complexType name="TextLines">
46+ <xsd:annotation>
47+<xsd:documentation><![CDATA[
48+############################################################################
49+li要素を子に持つ複数行コンテンツ。
50+############################################################################
51+]]></xsd:documentation>
52+ </xsd:annotation>
53+ <xsd:sequence>
54+ <xsd:element ref="tns:li" minOccurs="0" maxOccurs="unbounded" />
55+ </xsd:sequence>
56+ </xsd:complexType>
57+
58+ <!-- ================================================================ -->
59+
60+ <xsd:element name="li">
61+ <xsd:annotation>
62+<xsd:documentation><![CDATA[
63+############################################################################
64+会話文字列やシステムメッセージの各行を記述する混合モデル。
65+元XHTMLデータ内会話<div>要素内のスペースとタブは
66+すべて保存されなければならない。
67+それ以外の余分な改行とスペースとタブを入れてはならない。
68+生データ記述<rawdata>を途中に挿入可能。
69+############################################################################
70+]]></xsd:documentation>
71+ </xsd:annotation>
72+ <xsd:complexType mixed="true">
73+ <xsd:choice>
74+ <xsd:element
75+ ref="tns:rawdata"
76+ minOccurs="0" maxOccurs="unbounded"
77+ />
78+ </xsd:choice>
79+ <xsd:attribute
80+ ref="xml:space"
81+ use="optional"
82+ default="preserve"
83+ />
84+ </xsd:complexType>
85+ </xsd:element>
86+
87+ <!-- ================================================================ -->
88+
89+ <xsd:simpleType name="Onechar">
90+ <xsd:annotation>
91+<xsd:documentation><![CDATA[
92+############################################################################
93+1文字限定の文字列
94+############################################################################
95+]]></xsd:documentation>
96+ </xsd:annotation>
97+ <xsd:restriction base="xsd:string">
98+ <xsd:length value="1" />
99+ </xsd:restriction>
100+ </xsd:simpleType>
101+
102+ <!-- ================================================================ -->
103+
104+ <xsd:element name="rawdata">
105+ <xsd:annotation>
106+<xsd:documentation><![CDATA[
107+############################################################################
108+・人狼BBS元データのエンコーディングが変だった。
109+・もしくは文字集合制約を満たさなかった。(機種依存文字)
110+などの事実を記述するための1byteもしくは2byteの生データの情報。
111+類似するエンコーディングから代替文字1文字を推測して埋めておく事が可能。
112+
113+内容 : 代替文字列1文字。推測不可能な場合はU+FFFDなどが望ましい。
114+encoding : 元データのエンコーディングおよび文字集合指定。
115+ F国以前の人狼BBSでは事実上「Shift_JIS」固定。
116+hexBin : 元データの16進データ文字列。2文字か4文字。例)「874a」「FF」
117+############################################################################
118+]]></xsd:documentation>
119+ </xsd:annotation>
120+ <xsd:complexType>
121+ <xsd:simpleContent>
122+ <xsd:extension base="tns:Onechar">
123+ <xsd:attribute
124+ name="encoding"
125+ type="core:EncodingDecl"
126+ use="required"
127+ />
128+ <xsd:attribute
129+ name="hexBin"
130+ type="xsd:hexBinary"
131+ use="required"
132+ />
133+ </xsd:extension>
134+ </xsd:simpleContent>
135+ </xsd:complexType>
136+ </xsd:element>
137+
138+ <!-- ================================================================ -->
139+
140+ <xsd:complexType name="EventAnnounce">
141+ <xsd:annotation>
142+<xsd:documentation><![CDATA[
143+############################################################################
144+Announceイベント共通型。
145+eventFamily属性値は"announce"固定。
146+############################################################################
147+]]></xsd:documentation>
148+ </xsd:annotation>
149+ <xsd:complexContent>
150+ <xsd:extension base="tns:TextLines">
151+ <xsd:attribute
152+ name="eventFamily"
153+ type="core:EventFamily"
154+ fixed="announce"
155+ />
156+ </xsd:extension>
157+ </xsd:complexContent>
158+ </xsd:complexType>
159+
160+ <!-- ================================================================ -->
161+
162+ <xsd:complexType name="EventOrder">
163+ <xsd:annotation>
164+<xsd:documentation><![CDATA[
165+############################################################################
166+Orderイベント共通型。
167+eventFamily属性値は"order"固定。
168+############################################################################
169+]]></xsd:documentation>
170+ </xsd:annotation>
171+ <xsd:complexContent>
172+ <xsd:extension base="tns:TextLines">
173+ <xsd:attribute
174+ name="eventFamily"
175+ type="core:EventFamily"
176+ fixed="order"
177+ />
178+ </xsd:extension>
179+ </xsd:complexContent>
180+ </xsd:complexType>
181+
182+ <!-- ================================================================ -->
183+
184+ <xsd:complexType name="EventExtra">
185+ <xsd:annotation>
186+<xsd:documentation><![CDATA[
187+############################################################################
188+Extraイベント共通型。
189+eventFamily属性値は"extra"固定。
190+############################################################################
191+]]></xsd:documentation>
192+ </xsd:annotation>
193+ <xsd:complexContent>
194+ <xsd:extension base="tns:TextLines">
195+ <xsd:attribute
196+ name="eventFamily"
197+ type="core:EventFamily"
198+ fixed="extra"
199+ />
200+ </xsd:extension>
201+ </xsd:complexContent>
202+ </xsd:complexType>
203+
204+
205+<!-- 各種グループ定義 ################################ -->
206+
207+ <!-- ================================================================ -->
208+
209+ <xsd:group name="EventAnnounceGroup">
210+ <xsd:annotation>
211+<xsd:documentation><![CDATA[
212+############################################################################
213+Announce型システムメッセージ要素のグループ
214+############################################################################
215+]]></xsd:documentation>
216+ </xsd:annotation>
217+ <xsd:choice>
218+ <xsd:element ref="tns:startEntry" />
219+ <xsd:element ref="tns:onStage" />
220+ <xsd:element ref="tns:startMirror" />
221+ <xsd:element ref="tns:openRole" />
222+ <xsd:element ref="tns:murdered" />
223+ <xsd:element ref="tns:startAssault" />
224+ <xsd:element ref="tns:survivor" />
225+ <xsd:element ref="tns:counting" />
226+ <xsd:element ref="tns:suddenDeath" />
227+ <xsd:element ref="tns:noMurder" />
228+ <xsd:element ref="tns:winVillage" />
229+ <xsd:element ref="tns:winWolf" />
230+ <xsd:element ref="tns:winHamster" />
231+ <xsd:element ref="tns:playerList" />
232+ <xsd:element ref="tns:panic" />
233+ <xsd:element ref="tns:execution" />
234+ <xsd:element ref="tns:vanish" />
235+ <xsd:element ref="tns:checkout" />
236+ <xsd:element ref="tns:shortMember" />
237+ </xsd:choice>
238+ </xsd:group>
239+
240+ <!-- ================================================================ -->
241+
242+ <xsd:group name="EventOrderGroup">
243+ <xsd:annotation>
244+<xsd:documentation><![CDATA[
245+############################################################################
246+Order型システムメッセージ要素のグループ
247+############################################################################
248+]]></xsd:documentation>
249+ </xsd:annotation>
250+ <xsd:choice>
251+ <xsd:element ref="tns:askEntry" />
252+ <xsd:element ref="tns:askCommit" />
253+ <xsd:element ref="tns:noComment" />
254+ <xsd:element ref="tns:stayEpilogue" />
255+ <xsd:element ref="tns:gameOver" />
256+ </xsd:choice>
257+ </xsd:group>
258+
259+ <!-- ================================================================ -->
260+
261+ <xsd:group name="EventExtraGroup">
262+ <xsd:annotation>
263+<xsd:documentation><![CDATA[
264+############################################################################
265+Extra型システムメッセージ要素のグループ
266+############################################################################
267+]]></xsd:documentation>
268+ </xsd:annotation>
269+ <xsd:choice>
270+ <xsd:element ref="tns:judge" />
271+ <xsd:element ref="tns:guard" />
272+ <xsd:element ref="tns:counting2" />
273+ <xsd:element ref="tns:assault" />
274+ </xsd:choice>
275+ </xsd:group>
276+
277+
278+<!-- 各種要素定義 ################################ -->
279+
280+ <!-- ================================================================ -->
281+
282+ <xsd:element name="village">
283+ <xsd:annotation>
284+<xsd:documentation><![CDATA[
285+############################################################################
286+このスキーマ中の最高位ルート要素。
287+1つの「村」に対応する。
288+period並びは日順で並んでいなければならない。
289+
290+xml:lang => この要素内部で使われる言語。デフォルトは「ja-JP」
291+xml:base => この要素内で現れる相対URIのベース。
292+ 人狼BBSの運営方針によっては将来無効になる可能性もある。
293+xml:space => li要素より上位要素内のホワイトスペースのパース方針。
294+fullName => 村のフルネーム(ex.「F1784 日の沈まぬ村」)
295+vid => 村の識別ID(ex.「1784」)
296+commitTime => 更新時刻。24時間村なら出力するのが望ましい。
297+ GMTとの時差も出力するのが望ましい。
298+ 午後1時30分更新の例)「13:30:00+09:00」
299+ 時差表記がないならtimezone属性を使って
300+ 読み込み時に補正すべき。
301+state => 村の状態
302+disclosure => 発言の開示状況。
303+ 「hot」ならプレイ真っ最中の最新日が含まれている。
304+ 「uncomplete」なら未開示発言を含む日が含まれている。
305+ 「complete」なら全発言は完全に開示されている。
306+isValid => システムのトラブルでゲーム勝敗が成り立っていないと
307+ 判断できるならfalse
308+landName => 国の名前。「人狼BBS:F国」など。
309+formalName => 正式名称。http://homepage2.nifty.com/ninjinia/ に準ずる。
310+landId => JinCoreライブラリで管理している国の識別子。F国なら「wolff」
311+landPrefix => 村名の前置詞。F国なら「F」。
312+ 無い国も複数ある。
313+locale => この国で使われている言葉・文化。
314+origencoding => この国で使われているエンコーディング
315+timezone => この国の時刻表記で使われているタイムゾーン。
316+graveIconURI => 墓アイコン画像のURI
317+generator => XMLを吐き出したアプリ、サブシステム、ライブラリの名前。
318+############################################################################
319+]]></xsd:documentation>
320+ </xsd:annotation>
321+ <xsd:complexType>
322+ <xsd:sequence>
323+ <xsd:element ref="tns:avatarList" />
324+ <xsd:element
325+ ref="tns:period"
326+ minOccurs="0" maxOccurs="unbounded"
327+ />
328+ </xsd:sequence>
329+ <xsd:attribute
330+ ref="xml:lang"
331+ use="optional"
332+ default="ja-JP"
333+ />
334+ <xsd:attribute
335+ ref="xml:base"
336+ use="required"
337+ />
338+ <xsd:attribute
339+ ref="xml:space"
340+ use="optional"
341+ default="default"
342+ />
343+ <xsd:attribute
344+ name="fullName"
345+ type="xsd:normalizedString"
346+ use="required"
347+ />
348+ <xsd:attribute
349+ name="vid"
350+ type="xsd:nonNegativeInteger"
351+ use="required"
352+ />
353+ <xsd:attribute
354+ name="commitTime"
355+ type="xsd:time"
356+ use="optional"
357+ />
358+ <xsd:attribute
359+ name="state"
360+ type="core:VillageState"
361+ use="required"
362+ />
363+ <xsd:attribute
364+ name="disclosure"
365+ type="core:DisclosureType"
366+ use="optional"
367+ default="complete"
368+ />
369+ <xsd:attribute
370+ name="isValid"
371+ type="xsd:boolean"
372+ use="optional"
373+ default="true"
374+ />
375+ <xsd:attribute
376+ name="landName"
377+ type="xsd:normalizedString"
378+ use="required"
379+ />
380+ <xsd:attribute
381+ name="formalName"
382+ type="xsd:normalizedString"
383+ use="required"
384+ />
385+ <xsd:attribute
386+ name="landId"
387+ type="core:LandIdentifier"
388+ use="required"
389+ />
390+ <xsd:attribute
391+ name="landPrefix"
392+ type="xsd:token"
393+ use="required"
394+ />
395+ <xsd:attribute
396+ name="locale"
397+ type="xsd:language"
398+ use="optional"
399+ default="ja-JP"
400+ />
401+ <xsd:attribute
402+ name="origencoding"
403+ type="core:EncodingDecl"
404+ use="optional"
405+ default="Shift_JIS"
406+ />
407+ <xsd:attribute
408+ name="timezone"
409+ type="core:Timezone"
410+ use="optional"
411+ default="GMT+09:00"
412+ />
413+ <xsd:attribute
414+ name="graveIconURI"
415+ type="xsd:anyURI"
416+ use="required"
417+ />
418+ <xsd:attribute
419+ name="generator"
420+ type="xsd:normalizedString"
421+ use="optional"
422+ />
423+ </xsd:complexType>
424+
425+ <!-- ここからキー定義 -->
426+
427+ <xsd:key name="avatar-id">
428+ <xsd:selector xpath="./tns:avatarList/tns:avatar" />
429+ <xsd:field xpath="@avatarId" />
430+ </xsd:key>
431+
432+ <xsd:keyref name="avatarRef-avatar" refer="tns:avatar-id">
433+ <xsd:selector xpath=".//tns:avatarRef" />
434+ <xsd:field xpath="@avatarId" />
435+ </xsd:keyref>
436+
437+ <xsd:keyref name="onStage-avatar" refer="tns:avatar-id">
438+ <xsd:selector xpath=".//tns:onStage" />
439+ <xsd:field xpath="@avatarId" />
440+ </xsd:keyref>
441+
442+ <xsd:keyref name="vanish-avatar" refer="tns:avatar-id">
443+ <xsd:selector xpath=".//tns:vanish" />
444+ <xsd:field xpath="@avatarId" />
445+ </xsd:keyref>
446+
447+ <xsd:keyref name="checkout-avatar" refer="tns:avatar-id">
448+ <xsd:selector xpath=".//tns:checkout" />
449+ <xsd:field xpath="@avatarId" />
450+ </xsd:keyref>
451+
452+ <xsd:keyref name="execution-avatar-victim" refer="tns:avatar-id">
453+ <xsd:selector xpath=".//tns:execution" />
454+ <xsd:field xpath="@victim" />
455+ </xsd:keyref>
456+
457+ <xsd:keyref name="nominated-avatar" refer="tns:avatar-id">
458+ <xsd:selector xpath=".//tns:nominated" />
459+ <xsd:field xpath="@avatarId" />
460+ </xsd:keyref>
461+
462+ <xsd:keyref name="counting-avatar-victim" refer="tns:avatar-id">
463+ <xsd:selector xpath=".//tns:counting" />
464+ <xsd:field xpath="@victim" />
465+ </xsd:keyref>
466+
467+ <xsd:keyref name="vote-avatar-by" refer="tns:avatar-id">
468+ <xsd:selector xpath=".//tns:vote" />
469+ <xsd:field xpath="@byWhom" />
470+ </xsd:keyref>
471+
472+ <xsd:keyref name="vote-avatar-to" refer="tns:avatar-id">
473+ <xsd:selector xpath=".//tns:vote" />
474+ <xsd:field xpath="@target" />
475+ </xsd:keyref>
476+
477+ <xsd:keyref name="suddenDeath-avatar" refer="tns:avatar-id">
478+ <xsd:selector xpath=".//tns:suddenDeath" />
479+ <xsd:field xpath="@avatarId" />
480+ </xsd:keyref>
481+
482+ <xsd:keyref name="playerInfo-avatar" refer="tns:avatar-id">
483+ <xsd:selector xpath=".//tns:playerInfo" />
484+ <xsd:field xpath="@avatarId" />
485+ </xsd:keyref>
486+
487+ <xsd:keyref name="examine-avatar-by" refer="tns:avatar-id">
488+ <xsd:selector xpath=".//tns:judge" />
489+ <xsd:field xpath="@byWhom" />
490+ </xsd:keyref>
491+
492+ <xsd:keyref name="examine-avatar-to" refer="tns:avatar-id">
493+ <xsd:selector xpath=".//tns:judge" />
494+ <xsd:field xpath="@target" />
495+ </xsd:keyref>
496+
497+ <xsd:keyref name="guard-avatar-by" refer="tns:avatar-id">
498+ <xsd:selector xpath=".//tns:guard" />
499+ <xsd:field xpath="@byWhom" />
500+ </xsd:keyref>
501+
502+ <xsd:keyref name="guard-avatar-to" refer="tns:avatar-id">
503+ <xsd:selector xpath=".//tns:guard" />
504+ <xsd:field xpath="@target" />
505+ </xsd:keyref>
506+
507+ <xsd:keyref name="assault-avatar-by" refer="tns:avatar-id">
508+ <xsd:selector xpath=".//tns:assault" />
509+ <xsd:field xpath="@byWhom" />
510+ </xsd:keyref>
511+
512+ <xsd:keyref name="assault-avatar-to" refer="tns:avatar-id">
513+ <xsd:selector xpath=".//tns:assault" />
514+ <xsd:field xpath="@target" />
515+ </xsd:keyref>
516+
517+ <xsd:keyref name="talk-avatar" refer="tns:avatar-id">
518+ <xsd:selector xpath=".//tns:talk" />
519+ <xsd:field xpath="@avatarId" />
520+ </xsd:keyref>
521+
522+ <xsd:unique name="period-day">
523+ <xsd:selector xpath="./tns:period" />
524+ <xsd:field xpath="@day" />
525+ </xsd:unique>
526+
527+ </xsd:element>
528+
529+ <!-- ================================================================ -->
530+
531+ <xsd:element name="avatarList">
532+ <xsd:annotation>
533+<xsd:documentation><![CDATA[
534+############################################################################
535+Avatar(キャラクター)の集合。
536+############################################################################
537+]]></xsd:documentation>
538+ </xsd:annotation>
539+ <xsd:complexType>
540+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
541+ <xsd:element ref="tns:avatar" />
542+ </xsd:sequence>
543+ </xsd:complexType>
544+ </xsd:element>
545+
546+ <!-- ================================================================ -->
547+
548+ <xsd:element name="avatar">
549+ <xsd:annotation>
550+<xsd:documentation><![CDATA[
551+############################################################################
552+Avatar(キャラクター)の定義。
553+
554+avatarId => Avatarの識別名。
555+ Avatarを連想させる簡潔なアルファベット列が望ましい。(例:「gerd」)
556+ 適当にユニークで簡素なアルファベットを割り振ってもよい。
557+ 短縮名で代用してもよい。
558+ ハイフン禁止。
559+fullName => Avatarのフルネーム。(ex.「楽天家 ゲルト」)
560+shortName => Avatarの短縮名。(ex.「ゲルト」)スペース禁止。
561+faceIconURI => 顔画像アイコンへのURI。
562+ プロローグから一言も発言せずに突然死した場合は省略してもよい。
563+############################################################################
564+]]></xsd:documentation>
565+ </xsd:annotation>
566+ <xsd:complexType>
567+ <xsd:sequence />
568+ <xsd:attribute
569+ name="avatarId"
570+ type="core:AvatarId"
571+ use="required"
572+ />
573+ <xsd:attribute
574+ name="fullName"
575+ type="xsd:normalizedString"
576+ use="required"
577+ />
578+ <xsd:attribute
579+ name="shortName"
580+ type="xsd:token"
581+ use="required"
582+ />
583+ <xsd:attribute
584+ name="faceIconURI"
585+ type="xsd:anyURI"
586+ use="optional"
587+ />
588+ </xsd:complexType>
589+ </xsd:element>
590+
591+ <!-- ================================================================ -->
592+
593+ <xsd:element name="period">
594+ <xsd:annotation>
595+<xsd:documentation><![CDATA[
596+############################################################################
597+Period(日)の定義。
598+子要素として、会話およびシステムメッセージを0個以上抱える。
599+各システムメッセージの出現順に関する制約
600+(「突然死の次は投票結果のはず」、etc.)は、
601+このスキーマでは定義しない。
602+
603+type => このPeriodの種類。
604+day => プロローグは0、n日目はn、n日目の次にエピローグが来たなら、
605+ エピローグはn+1となる。
606+disclosure => 発言の開示状況。
607+ 「hot」ならその日はプレイ真っ最中の最新日。
608+ 「uncomplete」ならまだその日の未開示発言を取得していない可能性がある。
609+ 「complete」ならその日の全発言は完全に開示された。
610+nextCommitDay => 次回更新月日。年はなし。
611+ GMTとの時差も出力するのが望ましい。
612+ 8月31日の例)「--08-31+09:00」
613+ 時差表記がないならlandInfo要素のtimezone属性を使って
614+ 読み込み時に補正すべき。
615+commitTime => 更新時刻。秒以下の単位は切り捨て。
616+ GMTとの時差も出力するのが望ましい。
617+ 午後1時30分更新の例)「13:30:00+09:00」
618+ 時差表記がないならland要素のtimezone属性を使って
619+ 読み込み時に補正すべき。
620+sourceURI => このPeriodを取り込んだときの元となったURI。
621+ 同じ村の同じ日でも、進行によってURIが変わることが
622+ ありうる。
623+loadedTime => このPeriodを取り込んだ時刻。
624+ GMTとの時差も出力するのが望ましい。
625+ 人狼BBSサーバからのHTTP応答内部から算出するのが望ましい。
626+ 無理ならローカルカレンダから。
627+loadedBy => 進行中の村を参加者が読み込んだ場合、その時のログインIDを出力する。
628+ windows31jに由来する文字が含まれる場合もある。
629+############################################################################
630+]]></xsd:documentation>
631+ </xsd:annotation>
632+ <xsd:complexType>
633+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
634+ <xsd:element ref="tns:talk" />
635+ <xsd:group ref="tns:EventAnnounceGroup" />
636+ <xsd:group ref="tns:EventOrderGroup" />
637+ <xsd:group ref="tns:EventExtraGroup" />
638+ </xsd:choice>
639+ <xsd:attribute
640+ name="type"
641+ type="core:PeriodType"
642+ use="required"
643+ />
644+ <xsd:attribute
645+ name="day"
646+ type="xsd:nonNegativeInteger"
647+ use="required"
648+ />
649+ <xsd:attribute
650+ name="disclosure"
651+ type="core:DisclosureType"
652+ use="optional"
653+ default="complete"
654+ />
655+ <xsd:attribute
656+ name="nextCommitDay"
657+ type="xsd:gMonthDay"
658+ use="required"
659+ />
660+ <xsd:attribute
661+ name="commitTime"
662+ type="xsd:time"
663+ use="required"
664+ />
665+ <xsd:attribute
666+ name="sourceURI"
667+ type="xsd:anyURI"
668+ use="required"
669+ />
670+ <xsd:attribute
671+ name="loadedTime"
672+ type="xsd:dateTime"
673+ use="optional"
674+ />
675+ <xsd:attribute
676+ name="loadedBy"
677+ type="core:PlayerId"
678+ use="optional"
679+ />
680+ </xsd:complexType>
681+
682+ </xsd:element>
683+
684+ <!-- ================================================================ -->
685+
686+ <xsd:element name="avatarRef">
687+ <xsd:annotation>
688+<xsd:documentation><![CDATA[
689+############################################################################
690+Avatarへの参照。
691+avatarId => Avatar識別子
692+※ IDREFS属性を使うのやめた。
693+############################################################################
694+]]></xsd:documentation>
695+ </xsd:annotation>
696+ <xsd:complexType>
697+ <xsd:attribute
698+ name="avatarId"
699+ type="core:AvatarId"
700+ use="required"
701+ />
702+ </xsd:complexType>
703+ </xsd:element>
704+
705+ <!-- ================================================================ -->
706+
707+ <xsd:element name="startEntry" type="tns:EventAnnounce">
708+ <xsd:annotation>
709+<xsd:documentation><![CDATA[
710+############################################################################
711+システムメッセージ:エントリ開始
712+############################################################################
713+]]></xsd:documentation>
714+ </xsd:annotation>
715+ </xsd:element>
716+
717+ <!-- ================================================================ -->
718+
719+ <xsd:element name="onStage" >
720+ <xsd:annotation>
721+<xsd:documentation><![CDATA[
722+############################################################################
723+システムメッセージ:参加者登場
724+entryNo => 登場順番号。ごくまれにAvatar間で重複することあり。
725+avatarId => Avatar識別子
726+############################################################################
727+]]></xsd:documentation>
728+ </xsd:annotation>
729+ <xsd:complexType>
730+ <xsd:complexContent>
731+ <xsd:extension base="tns:EventAnnounce">
732+ <xsd:attribute
733+ name="entryNo"
734+ type="xsd:positiveInteger"
735+ use="required"
736+ />
737+ <xsd:attribute
738+ name="avatarId"
739+ type="core:AvatarId"
740+ use="required"
741+ />
742+ </xsd:extension>
743+ </xsd:complexContent>
744+ </xsd:complexType>
745+ </xsd:element>
746+
747+ <!-- ================================================================ -->
748+
749+ <xsd:element name="startMirror" type="tns:EventAnnounce">
750+ <xsd:annotation>
751+<xsd:documentation><![CDATA[
752+############################################################################
753+システムメッセージ:1日目開始
754+############################################################################
755+]]></xsd:documentation>
756+ </xsd:annotation>
757+ </xsd:element>
758+
759+ <!-- ================================================================ -->
760+
761+ <xsd:element name="openRole">
762+ <xsd:annotation>
763+<xsd:documentation><![CDATA[
764+############################################################################
765+システムメッセージ:役職構成開示
766+roleHeads要素(各役職の人数記述)を複数かかえる。
767+############################################################################
768+]]></xsd:documentation>
769+ </xsd:annotation>
770+ <xsd:complexType>
771+ <xsd:complexContent>
772+ <xsd:extension base="tns:EventAnnounce">
773+ <xsd:sequence minOccurs="1" maxOccurs="unbounded">
774+ <xsd:element ref="tns:roleHeads" />
775+ </xsd:sequence>
776+ </xsd:extension>
777+ </xsd:complexContent>
778+ </xsd:complexType>
779+ </xsd:element>
780+
781+ <!-- ================================================================ -->
782+
783+ <xsd:element name="roleHeads">
784+ <xsd:annotation>
785+<xsd:documentation><![CDATA[
786+############################################################################
787+役職とその人数
788+############################################################################
789+]]></xsd:documentation>
790+ </xsd:annotation>
791+ <xsd:complexType>
792+ <xsd:attribute
793+ name="role"
794+ type="core:Role"
795+ use="required"
796+ />
797+ <xsd:attribute
798+ name="heads"
799+ type="xsd:positiveInteger"
800+ use="required"
801+ />
802+ </xsd:complexType>
803+ </xsd:element>
804+
805+ <!-- ================================================================ -->
806+
807+ <xsd:element name="murdered">
808+ <xsd:annotation>
809+<xsd:documentation><![CDATA[
810+############################################################################
811+システムメッセージ:突然死でない犠牲者
812+avatarRef(Avatar参照)要素を1つ持つ。E国では2つ(ハム溶け)の場合も。
813+############################################################################
814+]]></xsd:documentation>
815+ </xsd:annotation>
816+ <xsd:complexType>
817+ <xsd:complexContent>
818+ <xsd:extension base="tns:EventAnnounce">
819+ <xsd:sequence>
820+ <xsd:element
821+ ref="tns:avatarRef"
822+ minOccurs="1" maxOccurs="2"
823+ />
824+ </xsd:sequence>
825+ </xsd:extension>
826+ </xsd:complexContent>
827+ </xsd:complexType>
828+ </xsd:element>
829+
830+ <!-- ================================================================ -->
831+
832+ <xsd:element name="startAssault" type="tns:EventAnnounce">
833+ <xsd:annotation>
834+<xsd:documentation><![CDATA[
835+############################################################################
836+システムメッセージ:最初の襲撃
837+############################################################################
838+]]></xsd:documentation>
839+ </xsd:annotation>
840+ </xsd:element>
841+
842+ <!-- ================================================================ -->
843+
844+ <xsd:element name="survivor">
845+ <xsd:annotation>
846+<xsd:documentation><![CDATA[
847+############################################################################
848+システムメッセージ:生存者一覧
849+生存者を表すavatarRef(Avatar参照)要素を1つ以上持つ。
850+############################################################################
851+]]></xsd:documentation>
852+ </xsd:annotation>
853+ <xsd:complexType>
854+ <xsd:complexContent>
855+ <xsd:extension base="tns:EventAnnounce">
856+ <xsd:sequence>
857+ <xsd:element
858+ ref="tns:avatarRef"
859+ minOccurs="1"
860+ maxOccurs="unbounded"
861+ />
862+ </xsd:sequence>
863+ </xsd:extension>
864+ </xsd:complexContent>
865+ </xsd:complexType>
866+ </xsd:element>
867+
868+ <!-- ================================================================ -->
869+
870+ <xsd:element name="counting">
871+ <xsd:annotation>
872+<xsd:documentation><![CDATA[
873+############################################################################
874+システムメッセージ:投票開示
875+vote要素(個々の投票)を1つ以上持つ。
876+victim => 処刑された人のAvatar識別子。誰も処刑されなかったら省略。
877+############################################################################
878+]]></xsd:documentation>
879+ </xsd:annotation>
880+ <xsd:complexType>
881+ <xsd:complexContent>
882+ <xsd:extension base="tns:EventAnnounce">
883+ <xsd:sequence>
884+ <xsd:element
885+ ref="tns:vote"
886+ minOccurs="1"
887+ maxOccurs="unbounded"
888+ />
889+ </xsd:sequence>
890+ <xsd:attribute
891+ name="victim"
892+ type="core:AvatarId"
893+ use="optional"
894+ />
895+ </xsd:extension>
896+ </xsd:complexContent>
897+ </xsd:complexType>
898+ </xsd:element>
899+
900+ <!-- ================================================================ -->
901+
902+ <xsd:element name="vote">
903+ <xsd:annotation>
904+<xsd:documentation><![CDATA[
905+############################################################################
906+処刑投票した人とされた人のペア。
907+voteBy => 投票した人のAvatar識別子
908+voteTo => 投票された人のAvatar識別子
909+############################################################################
910+]]></xsd:documentation>
911+ </xsd:annotation>
912+ <xsd:complexType>
913+ <xsd:attribute
914+ name="byWhom"
915+ type="core:AvatarId"
916+ use="required"
917+ />
918+ <xsd:attribute
919+ name="target"
920+ type="core:AvatarId"
921+ use="required"
922+ />
923+ </xsd:complexType>
924+ </xsd:element>
925+
926+ <!-- ================================================================ -->
927+
928+ <xsd:element name="suddenDeath" >
929+ <xsd:annotation>
930+<xsd:documentation><![CDATA[
931+############################################################################
932+システムメッセージ:突然死
933+avatarId => 突然死者のAvatar識別子
934+############################################################################
935+]]></xsd:documentation>
936+ </xsd:annotation>
937+ <xsd:complexType>
938+ <xsd:complexContent>
939+ <xsd:extension base="tns:EventAnnounce">
940+ <xsd:attribute
941+ name="avatarId"
942+ type="core:AvatarId"
943+ use="required"
944+ />
945+ </xsd:extension>
946+ </xsd:complexContent>
947+ </xsd:complexType>
948+ </xsd:element>
949+
950+ <!-- ================================================================ -->
951+
952+ <xsd:element name="noMurder" type="tns:EventAnnounce">
953+ <xsd:annotation>
954+<xsd:documentation><![CDATA[
955+############################################################################
956+システムメッセージ:襲撃による犠牲者なし。
957+############################################################################
958+]]></xsd:documentation>
959+ </xsd:annotation>
960+ </xsd:element>
961+
962+ <!-- ================================================================ -->
963+
964+ <xsd:element name="winVillage" type="tns:EventAnnounce">
965+ <xsd:annotation>
966+<xsd:documentation><![CDATA[
967+############################################################################
968+システムメッセージ:村陣営の勝利
969+############################################################################
970+]]></xsd:documentation>
971+ </xsd:annotation>
972+ </xsd:element>
973+
974+ <!-- ================================================================ -->
975+
976+ <xsd:element name="winWolf" type="tns:EventAnnounce">
977+ <xsd:annotation>
978+<xsd:documentation><![CDATA[
979+############################################################################
980+システムメッセージ:狼陣営の勝利
981+############################################################################
982+]]></xsd:documentation>
983+ </xsd:annotation>
984+ </xsd:element>
985+
986+ <!-- ================================================================ -->
987+
988+ <xsd:element name="winHamster" type="tns:EventAnnounce">
989+ <xsd:annotation>
990+<xsd:documentation><![CDATA[
991+############################################################################
992+システムメッセージ:ハムスター陣営の勝利
993+############################################################################
994+]]></xsd:documentation>
995+ </xsd:annotation>
996+ </xsd:element>
997+
998+ <!-- ================================================================ -->
999+
1000+ <xsd:element name="playerList">
1001+ <xsd:annotation>
1002+<xsd:documentation><![CDATA[
1003+############################################################################
1004+システムメッセージ:プレイヤー一覧開示
1005+プレイヤーに関する情報(playerInfo要素)を1つ以上持つ。
1006+avatar総数より少ない場合もあるかもしれない。
1007+############################################################################
1008+]]></xsd:documentation>
1009+ </xsd:annotation>
1010+ <xsd:complexType>
1011+ <xsd:complexContent>
1012+ <xsd:extension base="tns:EventAnnounce">
1013+ <xsd:sequence>
1014+ <xsd:element
1015+ ref="tns:playerInfo"
1016+ minOccurs="1" maxOccurs="unbounded"
1017+ />
1018+ </xsd:sequence>
1019+ </xsd:extension>
1020+ </xsd:complexContent>
1021+ </xsd:complexType>
1022+ </xsd:element>
1023+
1024+ <!-- ================================================================ -->
1025+
1026+ <xsd:element name="playerInfo">
1027+ <xsd:annotation>
1028+<xsd:documentation><![CDATA[
1029+############################################################################
1030+プレイヤー情報。
1031+playerId => プレイヤーのログインID。E国では@やTypeKeyニックネームを含む全部。
1032+ windows31jに由来する文字が含まれる場合もある。
1033+avatarId => Avatar識別子
1034+survive => 最終日まで生きていたか否か。
1035+role => 担当した役職
1036+uri => プレイヤーの指定した連絡先URI。URI条件を満たすかどうかは不明。
1037+############################################################################
1038+]]></xsd:documentation>
1039+ </xsd:annotation>
1040+ <xsd:complexType>
1041+ <xsd:attribute
1042+ name="playerId"
1043+ type="core:PlayerId"
1044+ use="required"
1045+ />
1046+ <xsd:attribute
1047+ name="avatarId"
1048+ type="core:AvatarId"
1049+ use="required"
1050+ />
1051+ <xsd:attribute
1052+ name="survive"
1053+ type="xsd:boolean"
1054+ use="required"
1055+ />
1056+ <xsd:attribute
1057+ name="role"
1058+ type="core:Role"
1059+ use="required"
1060+ />
1061+ <xsd:attribute
1062+ name="uri"
1063+ type="xsd:token"
1064+ use="optional"
1065+ />
1066+ </xsd:complexType>
1067+ </xsd:element>
1068+
1069+ <!-- ================================================================ -->
1070+
1071+ <xsd:element name="panic" type="tns:EventAnnounce">
1072+ <xsd:annotation>
1073+<xsd:documentation><![CDATA[
1074+############################################################################
1075+システムメッセージ:システム上のパニック
1076+############################################################################
1077+]]></xsd:documentation>
1078+ </xsd:annotation>
1079+ </xsd:element>
1080+
1081+ <!-- ================================================================ -->
1082+
1083+ <xsd:element name="execution">
1084+ <xsd:annotation>
1085+<xsd:documentation><![CDATA[
1086+############################################################################
1087+システムメッセージ:処刑結果開示 (G国)
1088+nominated要素(個々の投票集計)を1つ以上持つ。
1089+誰が投票したかは開示されない。
1090+victim => 処刑された人のAvatar識別子。誰も処刑されなかったら省略。
1091+############################################################################
1092+]]></xsd:documentation>
1093+ </xsd:annotation>
1094+ <xsd:complexType>
1095+ <xsd:complexContent>
1096+ <xsd:extension base="tns:EventAnnounce">
1097+ <xsd:sequence>
1098+ <xsd:element
1099+ ref="tns:nominated"
1100+ minOccurs="1"
1101+ maxOccurs="unbounded"
1102+ />
1103+ </xsd:sequence>
1104+ <xsd:attribute
1105+ name="victim"
1106+ type="core:AvatarId"
1107+ use="optional"
1108+ />
1109+ </xsd:extension>
1110+ </xsd:complexContent>
1111+ </xsd:complexType>
1112+ </xsd:element>
1113+
1114+ <!-- ================================================================ -->
1115+
1116+ <xsd:element name="nominated">
1117+ <xsd:annotation>
1118+<xsd:documentation><![CDATA[
1119+############################################################################
1120+G国投票状況。
1121+誰が投票したかは開示されない。
1122+voteと異なり既に集計済みの結果が表される。
1123+avatarId => 被投票者
1124+count => 集票数
1125+############################################################################
1126+]]></xsd:documentation>
1127+ </xsd:annotation>
1128+ <xsd:complexType>
1129+ <xsd:attribute
1130+ name="avatarId"
1131+ type="core:AvatarId"
1132+ use="required"
1133+ />
1134+ <xsd:attribute
1135+ name="count"
1136+ type="xsd:positiveInteger"
1137+ use="required"
1138+ />
1139+ </xsd:complexType>
1140+ </xsd:element>
1141+
1142+ <!-- ================================================================ -->
1143+
1144+ <xsd:element name="vanish">
1145+ <xsd:annotation>
1146+<xsd:documentation><![CDATA[
1147+############################################################################
1148+システムメッセージ:失踪 (G国)
1149+############################################################################
1150+]]></xsd:documentation>
1151+ </xsd:annotation>
1152+ <xsd:complexType>
1153+ <xsd:complexContent>
1154+ <xsd:extension base="tns:EventAnnounce">
1155+ <xsd:attribute
1156+ name="avatarId"
1157+ type="core:AvatarId"
1158+ use="required"
1159+ />
1160+ </xsd:extension>
1161+ </xsd:complexContent>
1162+ </xsd:complexType>
1163+ </xsd:element>
1164+
1165+ <!-- ================================================================ -->
1166+
1167+ <xsd:element name="checkout">
1168+ <xsd:annotation>
1169+<xsd:documentation><![CDATA[
1170+############################################################################
1171+システムメッセージ:チェックアウト (G国)
1172+############################################################################
1173+]]></xsd:documentation>
1174+ </xsd:annotation>
1175+ <xsd:complexType>
1176+ <xsd:complexContent>
1177+ <xsd:extension base="tns:EventAnnounce">
1178+ <xsd:attribute
1179+ name="avatarId"
1180+ type="core:AvatarId"
1181+ use="required"
1182+ />
1183+ </xsd:extension>
1184+ </xsd:complexContent>
1185+ </xsd:complexType>
1186+ </xsd:element>
1187+
1188+ <!-- ================================================================ -->
1189+
1190+ <xsd:element name="shortMember" type="tns:EventAnnounce">
1191+ <xsd:annotation>
1192+<xsd:documentation><![CDATA[
1193+############################################################################
1194+システムメッセージ:定員不足 (G国)
1195+############################################################################
1196+]]></xsd:documentation>
1197+ </xsd:annotation>
1198+ </xsd:element>
1199+
1200+ <!-- ================================================================ -->
1201+
1202+ <xsd:element name="askEntry" >
1203+ <xsd:annotation>
1204+<xsd:documentation><![CDATA[
1205+############################################################################
1206+システムメッセージ:プロローグ中の参加促し。
1207+commitTime => 更新時刻
1208+minMembers => 最少人数
1209+maxMembers => 最大人数
1210+############################################################################
1211+]]></xsd:documentation>
1212+ </xsd:annotation>
1213+ <xsd:complexType>
1214+ <xsd:complexContent>
1215+ <xsd:extension base="tns:EventOrder">
1216+ <xsd:attribute
1217+ name="commitTime"
1218+ type="xsd:time"
1219+ use="required"
1220+ />
1221+ <xsd:attribute
1222+ name="minMembers"
1223+ type="xsd:positiveInteger"
1224+ use="required"
1225+ />
1226+ <xsd:attribute
1227+ name="maxMembers"
1228+ type="xsd:positiveInteger"
1229+ use="required"
1230+ />
1231+ </xsd:extension>
1232+ </xsd:complexContent>
1233+ </xsd:complexType>
1234+ </xsd:element>
1235+
1236+ <!-- ================================================================ -->
1237+
1238+ <xsd:element name="askCommit" >
1239+ <xsd:annotation>
1240+<xsd:documentation><![CDATA[
1241+############################################################################
1242+システムメッセージ:投票促し
1243+limitVote => 投票期限
1244+limitSpecial => 特殊行動期限
1245+※ 両者とも同じ値のはず。
1246+############################################################################
1247+]]></xsd:documentation>
1248+ </xsd:annotation>
1249+ <xsd:complexType>
1250+ <xsd:complexContent>
1251+ <xsd:extension base="tns:EventOrder">
1252+ <xsd:attribute
1253+ name="limitVote"
1254+ type="xsd:time"
1255+ use="required"
1256+ />
1257+ <xsd:attribute
1258+ name="limitSpecial"
1259+ type="xsd:time"
1260+ use="required"
1261+ />
1262+ </xsd:extension>
1263+ </xsd:complexContent>
1264+ </xsd:complexType>
1265+ </xsd:element>
1266+
1267+ <!-- ================================================================ -->
1268+
1269+ <xsd:element name="noComment">
1270+ <xsd:annotation>
1271+<xsd:documentation><![CDATA[
1272+############################################################################
1273+システムメッセージ:発言促し
1274+未発言AvatarのAvatar参照要素(avatarRef)を1つ以上含む。
1275+############################################################################
1276+]]></xsd:documentation>
1277+ </xsd:annotation>
1278+ <xsd:complexType>
1279+ <xsd:complexContent>
1280+ <xsd:extension base="tns:EventOrder">
1281+ <xsd:sequence>
1282+ <xsd:element
1283+ ref="tns:avatarRef"
1284+ minOccurs="1"
1285+ maxOccurs="unbounded"
1286+ />
1287+ </xsd:sequence>
1288+ </xsd:extension>
1289+ </xsd:complexContent>
1290+ </xsd:complexType>
1291+ </xsd:element>
1292+
1293+ <!-- ================================================================ -->
1294+
1295+ <xsd:element name="stayEpilogue" >
1296+ <xsd:annotation>
1297+<xsd:documentation><![CDATA[
1298+############################################################################
1299+システムメッセージ:エピローグ終了予告
1300+winner => 勝利陣営
1301+limitTime => エピローグ終了時刻
1302+############################################################################
1303+]]></xsd:documentation>
1304+ </xsd:annotation>
1305+ <xsd:complexType>
1306+ <xsd:complexContent>
1307+ <xsd:extension base="tns:EventOrder">
1308+ <xsd:attribute
1309+ name="winner"
1310+ type="core:Team"
1311+ use="required"
1312+ />
1313+ <xsd:attribute
1314+ name="limitTime"
1315+ type="xsd:time"
1316+ use="required"
1317+ />
1318+ </xsd:extension>
1319+ </xsd:complexContent>
1320+ </xsd:complexType>
1321+ </xsd:element>
1322+
1323+ <!-- ================================================================ -->
1324+
1325+ <xsd:element name="gameOver" type="tns:EventOrder">
1326+ <xsd:annotation>
1327+<xsd:documentation><![CDATA[
1328+############################################################################
1329+システムメッセージ:ゲーム終了
1330+エピローグの次の日にしか出ないけど一応。
1331+############################################################################
1332+]]></xsd:documentation>
1333+ </xsd:annotation>
1334+ </xsd:element>
1335+
1336+ <!-- ================================================================ -->
1337+
1338+ <xsd:element name="judge">
1339+ <xsd:annotation>
1340+<xsd:documentation><![CDATA[
1341+############################################################################
1342+システムメッセージ:占い師と占われた人
1343+byWhom => 占い師Avatarの識別子。
1344+target => 占われたAvatarの識別子。
1345+############################################################################
1346+]]></xsd:documentation>
1347+ </xsd:annotation>
1348+ <xsd:complexType>
1349+ <xsd:complexContent>
1350+ <xsd:extension base="tns:EventExtra">
1351+ <xsd:attribute
1352+ name="byWhom"
1353+ type="core:AvatarId"
1354+ use="required"
1355+ />
1356+ <xsd:attribute
1357+ name="target"
1358+ type="core:AvatarId"
1359+ use="required"
1360+ />
1361+ </xsd:extension>
1362+ </xsd:complexContent>
1363+ </xsd:complexType>
1364+ </xsd:element>
1365+
1366+ <!-- ================================================================ -->
1367+
1368+ <xsd:element name="guard" >
1369+ <xsd:annotation>
1370+<xsd:documentation><![CDATA[
1371+############################################################################
1372+システムメッセージ:狩人と護衛された人。
1373+byWhom => 狩人Avatarの識別子。
1374+target => 護衛されたAvatarの識別子。
1375+############################################################################
1376+]]></xsd:documentation>
1377+ </xsd:annotation>
1378+ <xsd:complexType>
1379+ <xsd:complexContent>
1380+ <xsd:extension base="tns:EventExtra">
1381+ <xsd:attribute
1382+ name="byWhom"
1383+ type="core:AvatarId"
1384+ use="required"
1385+ />
1386+ <xsd:attribute
1387+ name="target"
1388+ type="core:AvatarId"
1389+ use="required"
1390+ />
1391+ </xsd:extension>
1392+ </xsd:complexContent>
1393+ </xsd:complexType>
1394+ </xsd:element>
1395+
1396+ <!-- ================================================================ -->
1397+
1398+ <xsd:element name="counting2">
1399+ <xsd:annotation>
1400+<xsd:documentation><![CDATA[
1401+############################################################################
1402+システムメッセージ:投票開示(G国以降)
1403+vote要素(個々の投票)を1つ以上持つ。
1404+countingと異なりvictim属性は定義されていない。
1405+############################################################################
1406+]]></xsd:documentation>
1407+ </xsd:annotation>
1408+ <xsd:complexType>
1409+ <xsd:complexContent>
1410+ <xsd:extension base="tns:EventExtra">
1411+ <xsd:sequence>
1412+ <xsd:element
1413+ ref="tns:vote"
1414+ minOccurs="1"
1415+ maxOccurs="unbounded"
1416+ />
1417+ </xsd:sequence>
1418+ </xsd:extension>
1419+ </xsd:complexContent>
1420+ </xsd:complexType>
1421+ </xsd:element>
1422+
1423+ <!-- ================================================================ -->
1424+
1425+ <xsd:element name="assault" >
1426+ <xsd:annotation>
1427+<xsd:documentation><![CDATA[
1428+############################################################################
1429+システムメッセージ:襲撃
1430+人狼BBSのXHTML上は赤ログに見える。
1431+byWhom => 襲撃した人狼のAvatar識別子
1432+target => 襲撃されたAvatarの識別子
1433+xname => 人狼BBS XHTML上のname属性値
1434+time => 襲撃時刻。秒以下の単位は切り捨て。
1435+faceIconURI => アイコン画像URI
1436+############################################################################
1437+]]></xsd:documentation>
1438+ </xsd:annotation>
1439+ <xsd:complexType>
1440+ <xsd:complexContent>
1441+ <xsd:extension base="tns:EventExtra">
1442+ <xsd:attribute
1443+ name="byWhom"
1444+ type="core:AvatarId"
1445+ use="required"
1446+ />
1447+ <xsd:attribute
1448+ name="target"
1449+ type="core:AvatarId"
1450+ use="required"
1451+ />
1452+ <xsd:attribute
1453+ name="xname"
1454+ type="xsd:NCName"
1455+ use="required"
1456+ />
1457+ <xsd:attribute
1458+ name="time"
1459+ type="xsd:time"
1460+ use="required"
1461+ />
1462+ <xsd:attribute
1463+ name="faceIconURI"
1464+ type="xsd:anyURI"
1465+ use="optional"
1466+ />
1467+ </xsd:extension>
1468+ </xsd:complexContent>
1469+ </xsd:complexType>
1470+ </xsd:element>
1471+
1472+ <!-- ================================================================ -->
1473+
1474+ <xsd:element name="talk">
1475+ <xsd:annotation>
1476+<xsd:documentation><![CDATA[
1477+############################################################################
1478+会話データ。
1479+
1480+type => 発言種別。
1481+avatarId => 話したAvatarの識別子。
1482+xname => 村の中ではほぼユニークな識別子だが、たまに重複もありえる。
1483+ 人狼BBS元データXHTMLのname属性の値に由来する。例:(「mes1239694501」)
1484+ 後半の数値列はエポック時からのミリ秒らしい。
1485+time => 発言時刻。秒以下の単位は切り捨て。時差も付けるべし。
1486+faceIconURI => avatar要素の顔アイコンURIと同一なら省略。
1487+ もし指定されていたら、avatar要素の顔アイコンURIより
1488+ こちらを使ってイメージ表示した方が望ましい。
1489+############################################################################
1490+]]></xsd:documentation>
1491+ </xsd:annotation>
1492+ <xsd:complexType>
1493+ <xsd:complexContent>
1494+ <xsd:extension base="tns:TextLines">
1495+ <xsd:attribute
1496+ name="type"
1497+ type="core:TalkType"
1498+ use="required"
1499+ />
1500+ <xsd:attribute
1501+ name="avatarId"
1502+ type="core:AvatarId"
1503+ use="required"
1504+ />
1505+ <xsd:attribute
1506+ name="xname"
1507+ type="xsd:NCName"
1508+ use="required"
1509+ />
1510+ <xsd:attribute
1511+ name="time"
1512+ type="xsd:time"
1513+ use="required"
1514+ />
1515+ <xsd:attribute
1516+ name="faceIconURI"
1517+ type="xsd:anyURI"
1518+ use="optional"
1519+ />
1520+ </xsd:extension>
1521+ </xsd:complexContent>
1522+ </xsd:complexType>
1523+ </xsd:element>
1524+
1525+ <!-- ================================================================ -->
1526+
1527+</xsd:schema>
1528+
1529+<!-- EOF -->
diff -r 3691ae45117b -r 1b9ee7c7c2e8 src/main/resources/jp/sourceforge/jindolf/archiver/resources/coreType-090929.xsd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/resources/jp/sourceforge/jindolf/archiver/resources/coreType-090929.xsd Thu Jun 30 00:42:19 2016 +0900
@@ -0,0 +1,342 @@
1+<?xml version="1.0" encoding="UTF-8" ?>
2+
3+<xsd:schema
4+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5+ xmlns:tns ="http://jindolf.sourceforge.jp/xml/ns/401"
6+ targetNamespace="http://jindolf.sourceforge.jp/xml/ns/401"
7+ elementFormDefault="qualified"
8+ version="2315"
9+ xml:lang="ja-JP"
10+>
11+
12+
13+ <xsd:annotation>
14+<xsd:documentation><![CDATA[
15+############################################################################
16+
17+人狼BBS 共通型 スキーム定義
18+
19+by olyutorskii [ http://sourceforge.jp/users/olyutorskii/ ]
20+License : The MIT License
21+※ カタログ化はご自由に
22+
23+Copyright(c) 2009 olyutorskii
24+$Id: coreType-090929.xsd 850 2009-09-29 08:33:59Z olyutorskii $
25+
26+############################################################################
27+]]></xsd:documentation>
28+ </xsd:annotation>
29+
30+
31+ <!-- ================================================================ -->
32+
33+ <xsd:simpleType name="LandIdentifier">
34+ <xsd:annotation>
35+<xsd:documentation><![CDATA[
36+############################################################################
37+Jindolfで管理している国別識別子。国ごとにユニークな識別子が割り当てられる。
38+F国なら「wolff」。
39+############################################################################
40+]]></xsd:documentation>
41+ </xsd:annotation>
42+
43+ <xsd:restriction base="xsd:string">
44+ <xsd:pattern value="[A-Za-z]([A-Za-z0-9_])*"/>
45+ </xsd:restriction>
46+
47+ </xsd:simpleType>
48+
49+ <xsd:simpleType name="LandState">
50+ <xsd:annotation>
51+<xsd:documentation><![CDATA[
52+############################################################################
53+国の状態。
54+「closed」ならアクセス不可。
55+「historical」なら過去ログ提供のみ。
56+「active」なら随時新規村参加者募集中。
57+############################################################################
58+]]></xsd:documentation>
59+ </xsd:annotation>
60+
61+ <xsd:restriction base="xsd:string">
62+ <xsd:enumeration value="closed"/>
63+ <xsd:enumeration value="historical"/>
64+ <xsd:enumeration value="active"/>
65+ </xsd:restriction>
66+
67+ </xsd:simpleType>
68+
69+ <!-- ================================================================ -->
70+
71+ <xsd:simpleType name="Timezone">
72+ <xsd:annotation>
73+<xsd:documentation><![CDATA[
74+############################################################################
75+タイムゾーン。
76+GMT表記のみ。例)「GMT+09:00」
77+############################################################################
78+]]></xsd:documentation>
79+ </xsd:annotation>
80+
81+ <xsd:restriction base="xsd:string">
82+ <xsd:pattern value="GMT(\+|\-)[0-9][0-9]?(:?[0-9][0-9])?"/>
83+ </xsd:restriction>
84+
85+ </xsd:simpleType>
86+
87+ <!-- ================================================================ -->
88+
89+ <xsd:simpleType name="EncodingDecl">
90+ <xsd:annotation>
91+<xsd:documentation><![CDATA[
92+############################################################################
93+元XHTMLデータのエンコーディング/文字集合指定。
94+人狼BBSの場合は事実上「Shift_JIS」一本か。
95+資料 : http://www.w3.org/TR/2008/REC-xml-20081126/#NT-EncName
96+############################################################################
97+]]></xsd:documentation>
98+ </xsd:annotation>
99+
100+ <xsd:restriction base="xsd:string">
101+ <xsd:pattern value="[A-Za-z]([A-Za-z0-9\._\-])*"/>
102+ </xsd:restriction>
103+
104+ </xsd:simpleType>
105+
106+ <!-- ================================================================ -->
107+
108+ <xsd:simpleType name="VillageState">
109+ <xsd:annotation>
110+<xsd:documentation><![CDATA[
111+############################################################################
112+村の状態
113+
114+prologue => プロローグ中
115+progress => 進行中
116+epilogue => エピローグ中
117+gameover => ゲーム終了
118+############################################################################
119+]]></xsd:documentation>
120+ </xsd:annotation>
121+
122+ <xsd:restriction base="xsd:string">
123+ <xsd:enumeration value="prologue" />
124+ <xsd:enumeration value="progress" />
125+ <xsd:enumeration value="epilogue" />
126+ <xsd:enumeration value="gameover" />
127+ </xsd:restriction>
128+
129+ </xsd:simpleType>
130+
131+ <!-- ================================================================ -->
132+
133+ <xsd:simpleType name="PeriodType">
134+ <xsd:annotation>
135+<xsd:documentation><![CDATA[
136+############################################################################
137+Period(日)の種類
138+
139+prologue => プロローグ
140+progress => 進行中の日
141+epilogue => エピローグ
142+############################################################################
143+]]></xsd:documentation>
144+ </xsd:annotation>
145+
146+ <xsd:restriction base="xsd:string">
147+ <xsd:enumeration value="prologue" />
148+ <xsd:enumeration value="progress" />
149+ <xsd:enumeration value="epilogue" />
150+ </xsd:restriction>
151+
152+ </xsd:simpleType>
153+
154+ <!-- ================================================================ -->
155+
156+ <xsd:simpleType name="TalkType">
157+ <xsd:annotation>
158+<xsd:documentation><![CDATA[
159+############################################################################
160+発言種別
161+
162+public => 白発言
163+wolf => 赤発言
164+private => 灰発言
165+grave => 青発言
166+############################################################################
167+]]></xsd:documentation>
168+ </xsd:annotation>
169+
170+ <xsd:restriction base="xsd:string">
171+ <xsd:enumeration value="public" />
172+ <xsd:enumeration value="wolf" />
173+ <xsd:enumeration value="private" />
174+ <xsd:enumeration value="grave" />
175+ </xsd:restriction>
176+
177+ </xsd:simpleType>
178+
179+ <!-- ================================================================ -->
180+
181+ <xsd:simpleType name="EventFamily">
182+ <xsd:annotation>
183+<xsd:documentation><![CDATA[
184+############################################################################
185+システムイベント種別
186+
187+announce => システムイベント白
188+order => システムイベント赤
189+extra => システムイベント灰
190+############################################################################
191+]]></xsd:documentation>
192+ </xsd:annotation>
193+
194+ <xsd:restriction base="xsd:string">
195+ <xsd:enumeration value="announce" />
196+ <xsd:enumeration value="order" />
197+ <xsd:enumeration value="extra" />
198+ </xsd:restriction>
199+
200+ </xsd:simpleType>
201+
202+ <!-- ================================================================ -->
203+
204+ <xsd:simpleType name="Team">
205+ <xsd:annotation>
206+<xsd:documentation><![CDATA[
207+############################################################################
208+陣営
209+
210+village => 村人
211+wolf => 人狼
212+hamster => ハムスター人間
213+############################################################################
214+]]></xsd:documentation>
215+ </xsd:annotation>
216+
217+ <xsd:restriction base="xsd:string">
218+ <xsd:enumeration value="village" />
219+ <xsd:enumeration value="wolf" />
220+ <xsd:enumeration value="hamster" />
221+ </xsd:restriction>
222+
223+ </xsd:simpleType>
224+
225+ <!-- ================================================================ -->
226+
227+ <xsd:simpleType name="Role">
228+ <xsd:annotation>
229+<xsd:documentation><![CDATA[
230+############################################################################
231+役職
232+
233+innocent => 村人
234+wolf => 人狼
235+seer => 占い師
236+shaman => 霊能者
237+madman => 狂人
238+hunter => 狩人
239+frater => 共有者
240+hamster => ハムスター人間
241+############################################################################
242+]]></xsd:documentation>
243+ </xsd:annotation>
244+
245+ <xsd:restriction base="xsd:string">
246+ <xsd:enumeration value="innocent" />
247+ <xsd:enumeration value="wolf" />
248+ <xsd:enumeration value="seer" />
249+ <xsd:enumeration value="shaman" />
250+ <xsd:enumeration value="madman" />
251+ <xsd:enumeration value="hunter" />
252+ <xsd:enumeration value="frater" />
253+ <xsd:enumeration value="hamster" />
254+ </xsd:restriction>
255+
256+ </xsd:simpleType>
257+
258+ <!-- ================================================================ -->
259+
260+ <xsd:simpleType name="AvatarId">
261+ <xsd:annotation>
262+<xsd:documentation><![CDATA[
263+############################################################################
264+Avatarの識別子。
265+日本語OK。ハイフン禁止。
266+XMLのID(xsd:ID)の一部としてハイフンなどと繋げて再利用される可能性あり。
267+############################################################################
268+]]></xsd:documentation>
269+ </xsd:annotation>
270+
271+ <xsd:restriction base="xsd:NCName">
272+ <xsd:pattern value="[^\-]+"/>
273+ </xsd:restriction>
274+
275+ </xsd:simpleType>
276+
277+ <!-- ================================================================ -->
278+
279+ <xsd:simpleType name="PlayerId">
280+ <xsd:annotation>
281+<xsd:documentation><![CDATA[
282+############################################################################
283+各プレイヤーのログイン名。
284+各国ログイン名の制約詳細は不明。とりあえずタブと改行禁止。
285+E国TypeKeyIDからニックネームを分離認識する作業はアプリ側の責務。
286+############################################################################
287+]]></xsd:documentation>
288+ </xsd:annotation>
289+
290+ <xsd:restriction base="xsd:string">
291+ <xsd:pattern value="[^\n\r\t]+" />
292+ <xsd:whiteSpace value="preserve" fixed="true"/>
293+ </xsd:restriction>
294+
295+ </xsd:simpleType>
296+
297+ <!-- ================================================================ -->
298+
299+ <xsd:simpleType name="DisclosureType">
300+ <xsd:annotation>
301+<xsd:documentation><![CDATA[
302+############################################################################
303+発言の公開状況。
304+「hot」ならその日はプレイ真っ最中の最新日。
305+「uncomplete」ならまだその日の未公開発言を取得していない可能性がある。
306+「complete」ならその日の全発言は完全に公開された。
307+############################################################################
308+]]></xsd:documentation>
309+ </xsd:annotation>
310+
311+ <xsd:restriction base="xsd:string">
312+ <xsd:enumeration value="hot" />
313+ <xsd:enumeration value="uncomplete" />
314+ <xsd:enumeration value="complete" />
315+ </xsd:restriction>
316+
317+ </xsd:simpleType>
318+
319+ <!-- ================================================================ -->
320+
321+ <xsd:simpleType name="IntList">
322+ <xsd:annotation>
323+<xsd:documentation><![CDATA[
324+############################################################################
325+整数の並び。
326+コンマ','で数字を区切る。
327+ハイフン'-'を使って範囲指定も可能。
328+例) 「1,2,7-15,21」
329+############################################################################
330+]]></xsd:documentation>
331+ </xsd:annotation>
332+
333+ <xsd:restriction base="xsd:string">
334+ <xsd:pattern value="[0-9]+( *\- *[0-9]+)?( *, *[0-9]+( *\- *[0-9]+)?)*" />
335+ <xsd:whiteSpace value="preserve" fixed="true"/>
336+ </xsd:restriction>
337+
338+ </xsd:simpleType>
339+
340+</xsd:schema>
341+
342+<!-- EOF -->
diff -r 3691ae45117b -r 1b9ee7c7c2e8 src/main/resources/jp/sourceforge/jindolf/archiver/resources/xmldummy.xsd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/resources/jp/sourceforge/jindolf/archiver/resources/xmldummy.xsd Thu Jun 30 00:42:19 2016 +0900
@@ -0,0 +1,43 @@
1+<?xml version="1.0" encoding="UTF-8" ?>
2+
3+<xsd:schema
4+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5+ targetNamespace="http://www.w3.org/XML/1998/namespace"
6+>
7+
8+ <xsd:annotation>
9+ <xsd:documentation>
10+ See
11+ http://www.w3.org/2001/xml.xsd
12+ http://www.w3.org/2009/01/xml.xsd
13+ </xsd:documentation>
14+ </xsd:annotation>
15+
16+ <xsd:attribute name="space">
17+ <xsd:simpleType>
18+ <xsd:restriction base="xsd:NCName">
19+ <xsd:enumeration value="default"/>
20+ <xsd:enumeration value="preserve"/>
21+ </xsd:restriction>
22+ </xsd:simpleType>
23+ </xsd:attribute>
24+
25+ <xsd:attribute name="lang">
26+ <xsd:simpleType>
27+ <xsd:union memberTypes="xsd:language">
28+ <xsd:simpleType>
29+ <xsd:restriction base="xsd:string">
30+ <xsd:enumeration value=""/>
31+ </xsd:restriction>
32+ </xsd:simpleType>
33+ </xsd:union>
34+ </xsd:simpleType>
35+ </xsd:attribute>
36+
37+ <xsd:attribute name="base" type="xsd:anyURI">
38+ </xsd:attribute>
39+
40+</xsd:schema>
41+
42+
43+<!-- EOF -->
Show on old repository browser