You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2010/04/12 10:59:44 UTC
svn commit: r933153 - in /xerces/c/trunk: samples/src/SEnumVal/SEnumVal.cpp
scripts/sanityTest_ExpectedResult.log
src/xercesc/validators/common/ContentSpecNode.cpp
Author: amassari
Date: Mon Apr 12 08:59:44 2010
New Revision: 933153
URL: http://svn.apache.org/viewvc?rev=933153&view=rev
Log:
The code formatting a content model was skipping the cardinality indicators (*, +, ?) [XERCESC-1914]
Modified:
xerces/c/trunk/samples/src/SEnumVal/SEnumVal.cpp
xerces/c/trunk/scripts/sanityTest_ExpectedResult.log
xerces/c/trunk/src/xercesc/validators/common/ContentSpecNode.cpp
Modified: xerces/c/trunk/samples/src/SEnumVal/SEnumVal.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/samples/src/SEnumVal/SEnumVal.cpp?rev=933153&r1=933152&r2=933153&view=diff
==============================================================================
--- xerces/c/trunk/samples/src/SEnumVal/SEnumVal.cpp (original)
+++ xerces/c/trunk/samples/src/SEnumVal/SEnumVal.cpp Mon Apr 12 08:59:44 2010
@@ -497,7 +497,9 @@ void processContentSpecNode( const Conte
case ContentSpecNode::ZeroOrOne: XERCES_STD_QUALIFIER cout << "ZeroOrOne"; break;
case ContentSpecNode::ZeroOrMore: XERCES_STD_QUALIFIER cout << "ZeroOrMore"; break;
case ContentSpecNode::OneOrMore: XERCES_STD_QUALIFIER cout << "OneOrMore"; break;
+ case ContentSpecNode::ModelGroupChoice:
case ContentSpecNode::Choice: XERCES_STD_QUALIFIER cout << "Choice"; break;
+ case ContentSpecNode::ModelGroupSequence:
case ContentSpecNode::Sequence: XERCES_STD_QUALIFIER cout << "Sequence"; break;
case ContentSpecNode::All: XERCES_STD_QUALIFIER cout << "All"; break;
case ContentSpecNode::Any: XERCES_STD_QUALIFIER cout << "Any"; break;
@@ -509,9 +511,7 @@ void processContentSpecNode( const Conte
case ContentSpecNode::Any_Skip: XERCES_STD_QUALIFIER cout << "Any_Skip"; break;
case ContentSpecNode::Any_Other_Skip: XERCES_STD_QUALIFIER cout << "Any_Other_Skip"; break;
case ContentSpecNode::Any_NS_Skip: XERCES_STD_QUALIFIER cout << "Any_NS_Skip"; break;
- case ContentSpecNode::Any_NS_Choice: XERCES_STD_QUALIFIER cout << "Any_NS_Choice"; break;
- case ContentSpecNode::ModelGroupSequence: XERCES_STD_QUALIFIER cout << "ModelGroupSequence"; break;
- case ContentSpecNode::ModelGroupChoice: XERCES_STD_QUALIFIER cout << "ModelGroupChoice"; break;
+ case ContentSpecNode::Any_NS_Choice: XERCES_STD_QUALIFIER cout << "Any_NS_Choice"; break;
case ContentSpecNode::UnknownType: XERCES_STD_QUALIFIER cout << "UnknownType"; break;
}
XERCES_STD_QUALIFIER cout << "\n";
Modified: xerces/c/trunk/scripts/sanityTest_ExpectedResult.log
URL: http://svn.apache.org/viewvc/xerces/c/trunk/scripts/sanityTest_ExpectedResult.log?rev=933153&r1=933152&r2=933153&view=diff
==============================================================================
--- xerces/c/trunk/scripts/sanityTest_ExpectedResult.log (original)
+++ xerces/c/trunk/scripts/sanityTest_ExpectedResult.log Mon Apr 12 08:59:44 2010
@@ -982,20 +982,20 @@ access the Schema information stored in
Name: personnel
Model Type: Children
Create Reason: Declared
-ContentType: ModelGroupSequence
-Content Model: (person,)
+ContentType: Sequence
+Content Model: (person+)
ComplexType:
TypeName: ,__AnonC0
- ContentType: ModelGroupSequence
+ ContentType: Sequence
--------------------------------------------
Name: person
Model Type: Children
Create Reason: Declared
-ContentType: ModelGroupSequence
-Content Model: ((name,email,url),link)
+ContentType: Sequence
+Content Model: (name,email*,url*,link?)
ComplexType:
TypeName: ,__AnonC1
- ContentType: ModelGroupSequence
+ ContentType: Sequence
Attributes:
Name: id
Type: ID
Modified: xerces/c/trunk/src/xercesc/validators/common/ContentSpecNode.cpp
URL: http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/common/ContentSpecNode.cpp?rev=933153&r1=933152&r2=933153&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/common/ContentSpecNode.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/common/ContentSpecNode.cpp Mon Apr 12 08:59:44 2010
@@ -100,7 +100,16 @@ static void formatNode( const ContentS
if (curNode->getElement()->getURI() == XMLElementDecl::fgPCDataElemId)
bufToFill.append(XMLElementDecl::fgPCDataElemName);
else
+ {
bufToFill.append(curNode->getElement()->getRawName());
+ // show the + and * modifiers also when we have a non-infinite number of repetitions
+ if(curNode->getMinOccurs()==0 && (curNode->getMaxOccurs()==-1 || curNode->getMaxOccurs()>1))
+ bufToFill.append(chAsterisk);
+ else if(curNode->getMinOccurs()==0 && curNode->getMaxOccurs()==1)
+ bufToFill.append(chQuestion);
+ else if(curNode->getMinOccurs()==1 && (curNode->getMaxOccurs()==-1 || curNode->getMaxOccurs()>1))
+ bufToFill.append(chPlus);
+ }
break;
case ContentSpecNode::ZeroOrOne :
@@ -131,27 +140,33 @@ static void formatNode( const ContentS
break;
case ContentSpecNode::Choice :
- if (parentType != curType)
+ if ((parentType & 0x0f) != (curType & 0x0f))
bufToFill.append(chOpenParen);
formatNode(first, curType, bufToFill);
- bufToFill.append(chPipe);
- formatNode(second, curType, bufToFill);
- if (parentType != curType)
+ if(second!=NULL)
+ {
+ bufToFill.append(chPipe);
+ formatNode(second, curType, bufToFill);
+ }
+ if ((parentType & 0x0f) != (curType & 0x0f))
bufToFill.append(chCloseParen);
break;
case ContentSpecNode::Sequence :
- if (parentType != curType)
+ if ((parentType & 0x0f) != (curType & 0x0f))
bufToFill.append(chOpenParen);
formatNode(first, curType, bufToFill);
- bufToFill.append(chComma);
- formatNode(second, curType, bufToFill);
- if (parentType != curType)
+ if(second!=NULL)
+ {
+ bufToFill.append(chComma);
+ formatNode(second, curType, bufToFill);
+ }
+ if ((parentType & 0x0f) != (curType & 0x0f))
bufToFill.append(chCloseParen);
break;
case ContentSpecNode::All :
- if (parentType != curType)
+ if ((parentType & 0x0f) != (curType & 0x0f))
{
bufToFill.append(chLatin_A);
bufToFill.append(chLatin_l);
@@ -161,7 +176,7 @@ static void formatNode( const ContentS
formatNode(first, curType, bufToFill);
bufToFill.append(chComma);
formatNode(second, curType, bufToFill);
- if (parentType != curType)
+ if ((parentType & 0x0f) != (curType & 0x0f))
bufToFill.append(chCloseParen);
break;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org