From 26a7de90cc885bfa50bfb53523be1d31cf2f1440 Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Sun, 17 Mar 2013 01:20:21 +0900 Subject: [PATCH] =?utf8?q?2.102.2=E7=89=88=E3=83=AA=E3=83=AA=E3=83=BC?= =?utf8?q?=E3=82=B9=E6=BA=96=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGELOG.txt | 2 +- pom.xml | 14 +- .../jp/sourceforge/mikutoga/pmd/ModelFileType.java | 30 --- .../mikutoga/pmd/parser/PmdParserBase.java | 4 +- .../jp/sourceforge/mikutoga/typical/I18nAlias.java | 8 +- .../jp/sourceforge/mikutoga/xml/DomNsUtils.java | 38 ++- .../java/jp/sourceforge/mikutoga/xml/DomUtils.java | 2 +- .../mikutoga/xml/XmlResourceResolver.java | 48 +++- .../mikutoga/xml/resources/xml-2009-01.xsd | 286 --------------------- .../mikutoga/xml/resources/xmlspace.xsd | 37 +++ 10 files changed, 120 insertions(+), 349 deletions(-) delete mode 100644 src/main/java/jp/sourceforge/mikutoga/pmd/ModelFileType.java delete mode 100644 src/main/resources/jp/sourceforge/mikutoga/xml/resources/xml-2009-01.xsd create mode 100644 src/main/resources/jp/sourceforge/mikutoga/xml/resources/xmlspace.xsd diff --git a/CHANGELOG.txt b/CHANGELOG.txt index fc50b2f..344c172 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,7 +4,7 @@ TogaGem 変更履歴 -X.XXX.X (20XX-XX-XX) +2.102.2 (2013-03-17) ・Maven3対応。 ・JRE版数によって"0.001"や"0.0010"になるXML上の実数表記揺れを吸収。 diff --git a/pom.xml b/pom.xml index f4d468d..81bb908 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ jp.sourceforge.mikutoga togagem - 2.101.3-SNAPSHOT + 2.102.2 jar TogaGem @@ -121,11 +121,11 @@ org.apache.maven.plugins maven-enforcer-plugin - 1.1.1 + 1.2 - [2.2,) + [3.0,) [1.6,) @@ -233,7 +233,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.12.4 + 2.13 false true @@ -262,7 +262,7 @@ org.apache.maven.plugins maven-pmd-plugin - 2.7.1 + 2.7.1 ${maven.compiler.target} @@ -416,7 +416,7 @@ org.apache.maven.plugins maven-surefire-report-plugin - 2.12.4 + 2.13 false @@ -462,7 +462,7 @@ org.apache.maven.plugins maven-pmd-plugin - 2.7.1 + 2.7.1 false ${maven.compiler.target} diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/ModelFileType.java b/src/main/java/jp/sourceforge/mikutoga/pmd/ModelFileType.java deleted file mode 100644 index 06cf18c..0000000 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/ModelFileType.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * MMD model file types. - * - * License : The MIT License - * Copyright(c) 2012 MikuToga Partners - */ - -package jp.sourceforge.mikutoga.pmd; - -/** - * モデルファイル種別。 - */ -public enum ModelFileType { - - /** 不明。 */ - NONE, - - /** MikuMikuDance ver7 前後で読み書きが可能なPMDファイル。 */ - PMD, - - /** - * スキーマ - * http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-101009.xsd - * で定義されたXMLファイル。 - */ - XML_101009, - - ; - -} diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdParserBase.java b/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdParserBase.java index e92f0fa..a0eb060 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdParserBase.java +++ b/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdParserBase.java @@ -446,10 +446,10 @@ public class PmdParserBase extends CommonParser { int parentId = parseLeUShortAsInt(); int tailId = parseLeUShortAsInt(); byte boneKind = parseByte(); - int ikId = parseLeUShortAsInt(); + int srcId = parseLeUShortAsInt(); this.boneHandler.pmdBoneInfo(boneName, boneKind); - this.boneHandler.pmdBoneLink(parentId, tailId, ikId); + this.boneHandler.pmdBoneLink(parentId, tailId, srcId); float xPos = parseLeFloat(); float yPos = parseLeFloat(); diff --git a/src/main/java/jp/sourceforge/mikutoga/typical/I18nAlias.java b/src/main/java/jp/sourceforge/mikutoga/typical/I18nAlias.java index 69fdb8d..0f37ced 100644 --- a/src/main/java/jp/sourceforge/mikutoga/typical/I18nAlias.java +++ b/src/main/java/jp/sourceforge/mikutoga/typical/I18nAlias.java @@ -114,8 +114,8 @@ class I18nAlias { *
  • 「ボーン」は「ボーン」になる *
  • 「ホ゛ーン9」は「ボーン9」になる * - * @param name - * @return + * @param name 正規化対象文字列 + * @return 正規化済み文字列 */ protected static String normalize(CharSequence name){ String result; @@ -126,7 +126,7 @@ class I18nAlias { /** * オーダー番号を返す。 - * @return + * @return オーダー番号 */ protected int getOrderNo(){ return this.orderNo; @@ -134,7 +134,7 @@ class I18nAlias { /** * オーダー番号を設定する。 - * @param orderNo + * @param orderNo オーダー番号 */ protected void setOrderNo(int orderNo){ this.orderNo = orderNo; diff --git a/src/main/java/jp/sourceforge/mikutoga/xml/DomNsUtils.java b/src/main/java/jp/sourceforge/mikutoga/xml/DomNsUtils.java index 8e338b8..91be302 100644 --- a/src/main/java/jp/sourceforge/mikutoga/xml/DomNsUtils.java +++ b/src/main/java/jp/sourceforge/mikutoga/xml/DomNsUtils.java @@ -47,18 +47,18 @@ public final class DomNsUtils { * @return ノードの名前空間およびローカル名が一致したらtrue */ public static boolean hasNsLocalNameNode(Node node, - String nsuri, - String localName ){ + String nsuri, + String localName ){ String nodeLocalName = node.getLocalName(); String nodeNsUri = node.getNamespaceURI(); - boolean needLocalCmp = - localName != null; - boolean needUriCmp = - nsuri != null && nodeNsUri != null; + if(localName != null){ + if( ! localName.equals(nodeLocalName) ) return false; + } - if(needLocalCmp && ! localName.equals(nodeLocalName) ) return false; - if(needUriCmp && ! nsuri.equals(nodeNsUri)) return false; + if(nsuri != null && nodeNsUri != null){ + if( ! nsuri.equals(nodeNsUri) ) return false; + } return true; } @@ -79,6 +79,28 @@ public final class DomNsUtils { } /** + * 親要素が指定された名前の子要素を持つか判定する。 + * @param parent 親要素 + * @param nsuri 名前空間URI + * @param localName ローカル名 + * @return 指定名の子要素が存在すればtrue + */ + public static boolean hasChild(Element parent, + String nsuri, + String localName ){ + for(Node node = parent.getFirstChild(); + node != null; + node = node.getNextSibling() ){ + + if(hasNsLocalNameElem(node, nsuri, localName)){ + return true; + } + } + + return false; + } + + /** * 指定された名前空間とローカル名に合致する最初の直下子要素を返す。 * @param parent 親要素 * @param nsuri 名前空間URI diff --git a/src/main/java/jp/sourceforge/mikutoga/xml/DomUtils.java b/src/main/java/jp/sourceforge/mikutoga/xml/DomUtils.java index c516563..81a0e94 100644 --- a/src/main/java/jp/sourceforge/mikutoga/xml/DomUtils.java +++ b/src/main/java/jp/sourceforge/mikutoga/xml/DomUtils.java @@ -151,7 +151,7 @@ public final class DomUtils { throw new TogaXmlException(message, e); } - result.replace("" + '\u00a5', "" + BS_CHAR); + result = result.replace("" + '\u00a5', "" + BS_CHAR); return result; } diff --git a/src/main/java/jp/sourceforge/mikutoga/xml/XmlResourceResolver.java b/src/main/java/jp/sourceforge/mikutoga/xml/XmlResourceResolver.java index bed0634..4ea9167 100644 --- a/src/main/java/jp/sourceforge/mikutoga/xml/XmlResourceResolver.java +++ b/src/main/java/jp/sourceforge/mikutoga/xml/XmlResourceResolver.java @@ -39,7 +39,7 @@ public class XmlResourceResolver "http://www.w3.org/2001/XMLSchema-instance"; private static final String LOCAL_SCHEMA_XML = - "resources/xml-2009-01.xsd"; + "resources/xmlspace.xsd"; private static final URI EMPTY_URI = URI.create(""); @@ -68,7 +68,7 @@ public class XmlResourceResolver URI originalURI = URI.create(SCHEMA_XML); URI redirectURI = URI.create(redirectResName); - putURIMapImpl(originalURI, redirectURI); + putRedirectedImpl(originalURI, redirectURI); return; } @@ -135,7 +135,7 @@ public class XmlResourceResolver * @param original オリジナルURI * @param redirect リダイレクトURI */ - private void putURIMapImpl(URI original, URI redirect){ + private void putRedirectedImpl(URI original, URI redirect){ URI oridinalNorm = original.normalize(); URI redirectNorm = redirect.normalize(); @@ -150,12 +150,43 @@ public class XmlResourceResolver * @param original オリジナルURI * @param redirect リダイレクトURI */ - public void putURIMap(URI original, URI redirect){ - putURIMapImpl(original, redirect); + public void putRedirected(URI original, URI redirect){ + putRedirectedImpl(original, redirect); return; } /** + * 別リゾルバの登録内容を追加登録する。 + * @param other 別リゾルバ + */ + public void putRedirected(XmlResourceResolver other){ + this.uriMap.putAll(other.uriMap); + return; + } + + /** + * 登録済みリダイレクト先URIを返す。 + * @param original オリジナルURI + * @return リダイレクト先URI。未登録の場合はnull + */ + public URI getRedirected(URI original){ + URI keyURI = original.normalize(); + URI resourceURI = this.uriMap.get(keyURI); + return resourceURI; + } + + /** + * 登録済みリダイレクト先URIを返す。 + * @param original オリジナルURI + * @return リダイレクト先URI。未登録の場合はオリジナルを返す + */ + public URI resolveRedirected(URI original){ + URI result = getRedirected(original); + if(result == null) result = original; + return result; + } + + /** * 登録済みリダイレクト先リソースの入力ストリームを得る。 * @param originalURI オリジナルURI * @return 入力ストリーム。リダイレクト先が未登録の場合はnull @@ -164,11 +195,8 @@ public class XmlResourceResolver */ private InputStream getXMLResourceAsStream(URI originalURI) throws IOException{ - URI keyURI = originalURI.normalize(); - URI resourceURI = this.uriMap.get(keyURI); - if(resourceURI == null){ - return null; - } + URI resourceURI = getRedirected(originalURI); + if(resourceURI == null) return null; URL resourceURL = resourceURI.toURL(); InputStream is = resourceURL.openStream(); diff --git a/src/main/resources/jp/sourceforge/mikutoga/xml/resources/xml-2009-01.xsd b/src/main/resources/jp/sourceforge/mikutoga/xml/resources/xml-2009-01.xsd deleted file mode 100644 index 9e56d2e..0000000 --- a/src/main/resources/jp/sourceforge/mikutoga/xml/resources/xml-2009-01.xsd +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - -
    -

    About the XML namespace

    - -
    -

    - This schema document describes the XML namespace, in a form - suitable for import by other schema documents. -

    -

    - See - http://www.w3.org/XML/1998/namespace.html and - - http://www.w3.org/TR/REC-xml for information - about this namespace. -

    -

    - Note that local names in this namespace are intended to be - defined only by the World Wide Web Consortium or its subgroups. - The names currently defined in this namespace are listed below. - They should not be used with conflicting semantics by any Working - Group, specification, or document instance. -

    -

    - See further below in this document for more information about how to refer to this schema document from your own - XSD schema documents and about the - namespace-versioning policy governing this schema document. -

    -
    -
    -
    -
    - - - - -
    - -

    lang (as an attribute name)

    -

    - denotes an attribute whose value - is a language code for the natural language of the content of - any element; its value is inherited. This name is reserved - by virtue of its definition in the XML specification.

    - -
    -
    -

    Notes

    -

    - Attempting to install the relevant ISO 2- and 3-letter - codes as the enumerated possible values is probably never - going to be a realistic possibility. -

    -

    - See BCP 47 at - http://www.rfc-editor.org/rfc/bcp/bcp47.txt - and the IANA language subtag registry at - - http://www.iana.org/assignments/language-subtag-registry - for further information. -

    -

    - The union allows for the 'un-declaration' of xml:lang with - the empty string. -

    -
    -
    -
    - - - - - - - - - -
    - - - - -
    - -

    space (as an attribute name)

    -

    - denotes an attribute whose - value is a keyword indicating what whitespace processing - discipline is intended for the content of the element; its - value is inherited. This name is reserved by virtue of its - definition in the XML specification.

    - -
    -
    -
    - - - - - - -
    - - - -
    - -

    base (as an attribute name)

    -

    - denotes an attribute whose value - provides a URI to be used as the base for interpreting any - relative URIs in the scope of the element on which it - appears; its value is inherited. This name is reserved - by virtue of its definition in the XML Base specification.

    - -

    - See http://www.w3.org/TR/xmlbase/ - for information about this attribute. -

    -
    -
    -
    -
    - - - - -
    - -

    id (as an attribute name)

    -

    - denotes an attribute whose value - should be interpreted as if declared to be of type ID. - This name is reserved by virtue of its definition in the - xml:id specification.

    - -

    - See http://www.w3.org/TR/xml-id/ - for information about this attribute. -

    -
    -
    -
    -
    - - - - - - - - - - -
    - -

    Father (in any context at all)

    - -
    -

    - denotes Jon Bosak, the chair of - the original XML Working Group. This name is reserved by - the following decision of the W3C XML Plenary and - XML Coordination groups: -

    -
    -

    - In appreciation for his vision, leadership and - dedication the W3C XML Plenary on this 10th day of - February, 2000, reserves for Jon Bosak in perpetuity - the XML name "xml:Father". -

    -
    -
    -
    -
    -
    - - - -
    -

    About this schema document

    - -
    -

    - This schema defines attributes and an attribute group suitable - for use by schemas wishing to allow xml:base, - xml:lang, xml:space or - xml:id attributes on elements they define. -

    -

    - To enable this, such a schema must import this schema for - the XML namespace, e.g. as follows: -

    -
    -          <schema . . .>
    -           . . .
    -           <import namespace="http://www.w3.org/XML/1998/namespace"
    -                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
    -     
    -

    - or -

    -
    -           <import namespace="http://www.w3.org/XML/1998/namespace"
    -                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
    -     
    -

    - Subsequently, qualified reference to any of the attributes or the - group defined below will have the desired effect, e.g. -

    -
    -          <type . . .>
    -           . . .
    -           <attributeGroup ref="xml:specialAttrs"/>
    -     
    -

    - will define a type which will schema-validate an instance element - with any of those attributes. -

    -
    -
    -
    -
    - - - -
    -

    Versioning policy for this schema document

    -
    -

    - In keeping with the XML Schema WG's standard versioning - policy, this schema document will persist at - - http://www.w3.org/2009/01/xml.xsd. -

    -

    - At the date of issue it can also be found at - - http://www.w3.org/2001/xml.xsd. -

    -

    - The schema document at that URI may however change in the future, - in order to remain compatible with the latest version of XML - Schema itself, or with the XML namespace itself. In other words, - if the XML Schema or XML namespaces change, the version of this - document at - http://www.w3.org/2001/xml.xsd - - will change accordingly; the version at - - http://www.w3.org/2009/01/xml.xsd - - will not change. -

    -

    - Previous dated (and unchanging) versions of this schema - document are at: -

    - -
    -
    -
    -
    - -
    diff --git a/src/main/resources/jp/sourceforge/mikutoga/xml/resources/xmlspace.xsd b/src/main/resources/jp/sourceforge/mikutoga/xml/resources/xmlspace.xsd new file mode 100644 index 0000000..a1f0cec --- /dev/null +++ b/src/main/resources/jp/sourceforge/mikutoga/xml/resources/xmlspace.xsd @@ -0,0 +1,37 @@ + + + + + + + Only for using "xml:space" in XML schema definition. + See + http://www.w3.org/2001/xml.xsd + http://www.w3.org/2009/01/xml.xsd + + + + + + + + about xml:space attribute + + + + + + + + + + + + + + + + -- 2.11.0