use of org.eclipse.xsd.util.XSDResourceImpl in project tmdm-studio-se by Talend.
the class XSDGenerateHTML method loadAndPrint.
/**
* Load the XML Schema file and print the documentation based on it.
*
* @param xsdFile the name of an XML Schema file.
*/
public void loadAndPrint(String xsdFile) throws Exception {
XSDFactory xsdFactory = XSDFactory.eINSTANCE;
// Create a resource set and load the main schema file into it.
//
ResourceSet resourceSet = new ResourceSetImpl();
XSDResourceImpl xsdResource = (XSDResourceImpl) resourceSet.getResource(URI.createFileURI(xsdFile), true);
XSDSchema xsdSchema = xsdResource.getSchema();
// $NON-NLS-1$
String elementContentHeaderDocumentation = getContentDocumentation("element-header");
if (elementContentHeaderDocumentation != null) {
System.out.println(elementContentHeaderDocumentation);
}
List all = new ArrayList(xsdSchema.getElementDeclarations());
// $NON-NLS-1$
XSDElementDeclaration simpleContent = xsdSchema.resolveElementDeclaration("simpleContent");
// $NON-NLS-1$
XSDElementDeclaration complexContent = xsdSchema.resolveElementDeclaration("complexContent");
for (int i = 0; i <= 1; ++i) {
for (int j = 0; j <= 1; ++j) {
XSDElementDeclaration parentElement = (i == 0 ? complexContent : simpleContent);
XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition) parentElement.getTypeDefinition();
XSDElementDeclaration specialElementDeclaration = (XSDElementDeclaration) ((XSDParticle) ((XSDModelGroup) ((XSDParticle) ((XSDModelGroup) ((XSDParticle) (xsdComplexTypeDefinition.getContentType())).getTerm()).getParticles().get(1)).getTerm()).getParticles().get(j)).getTerm();
all.add(specialElementDeclaration);
specialAnchorMap.put(specialElementDeclaration, parentElement);
}
}
all = XSDNamedComponentImpl.sortNamedComponents(all);
for (Iterator i = all.iterator(); i.hasNext(); ) {
XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) i.next();
XSDElementDeclaration parentElementDeclaration = (XSDElementDeclaration) specialAnchorMap.get(xsdElementDeclaration);
String elementDeclarationName = xsdElementDeclaration.getName();
String key = // $NON-NLS-1$ //$NON-NLS-2$
(parentElementDeclaration == null ? "" : parentElementDeclaration.getName() + "::") + elementDeclarationName;
String elementDeclarationMarkup = getElementDeclarationMarkup(key);
// $NON-NLS-1$
System.out.print("<h2>");
System.out.print(elementDeclarationName.substring(0, 1).toUpperCase());
System.out.print(elementDeclarationName.substring(1));
// $NON-NLS-1$
System.out.println("</h2>");
// $NON-NLS-1$
System.out.println("<div class='reprdef'>");
// $NON-NLS-1$
System.out.println("<table cols=1 width='100%'><tr><td>");
System.out.print(// $NON-NLS-1$
"<div class='reprHeader'><span class='reprdef'>XML Representation Summary: </span><code>");
// $NON-NLS-1$ //$NON-NLS-2$
System.out.print("<a name='" + getLocalAnchor(xsdElementDeclaration) + "'>");
System.out.print(getStandardLink(xsdElementDeclaration));
System.out.print(elementDeclarationName);
// $NON-NLS-1$
System.out.print("</a></a></code>");
// $NON-NLS-1$
System.out.print(" Element Information Item ");
if (parentElementDeclaration != null) {
// $NON-NLS-1$
System.out.print("<small>(");
// $NON-NLS-1$ //$NON-NLS-2$
System.out.print("<a href='#" + getLocalAnchor(parentElementDeclaration) + "'>");
System.out.print(parentElementDeclaration.getName());
// $NON-NLS-1$
System.out.print("</a>)</small>");
} else if ("restriction".equals(elementDeclarationName)) {
// $NON-NLS-1$
// $NON-NLS-1$
System.out.print("<small>(simpleType)</small>");
}
// $NON-NLS-1$
System.out.println("</div>");
// $NON-NLS-1$
System.out.println("<div class='reprBody'>");
if (elementDeclarationMarkup != null) {
// $NON-NLS-1$ //$NON-NLS-2$
System.out.print("<div class='" + elementDeclarationMarkup + "'>");
}
// $NON-NLS-1$
System.out.print("<tt><");
System.out.print(elementDeclarationName);
// $NON-NLS-1$
System.out.print("</tt>");
String componentLinks = getComponentLinks(xsdElementDeclaration);
if (componentLinks != null) {
System.out.print(componentLinks);
}
// $NON-NLS-1$
System.out.println("<br>");
StringBuffer attributeDocumentationBuffer = new StringBuffer();
Map repeatedDocumentationMap = new HashMap();
XSDTypeDefinition xsdTypeDefinition = xsdElementDeclaration.getTypeDefinition();
XSDComplexTypeDefinition generalType = xsdSchema.resolveComplexTypeDefinitionURI(xsdElementDeclaration.getURI());
if (generalType.getContainer() != null) {
xsdTypeDefinition = generalType;
}
if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition) {
// $NON-NLS-1$
System.out.println("<tt>></tt><br>");
} else if (xsdTypeDefinition instanceof XSDComplexTypeDefinition) {
XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition) xsdTypeDefinition;
for (Iterator attributeUses = xsdComplexTypeDefinition.getAttributeUses().iterator(); attributeUses.hasNext(); ) {
XSDAttributeUse xsdAttributeUse = (XSDAttributeUse) attributeUses.next();
XSDAttributeDeclaration xsdAttributeDeclaration = xsdAttributeUse.getAttributeDeclaration();
String attributeDeclarationName = xsdAttributeDeclaration.getName();
// $NON-NLS-1$
System.out.print("<tt> ");
if (xsdAttributeDeclaration.getTargetNamespace() != null) {
// $NON-NLS-1$
System.out.print("xml:");
}
String attributeDeclarationMarkup = null;
String attributeDeclarationDocumentation = null;
if (!"ignored".equals(elementDeclarationMarkup)) {
// $NON-NLS-1$
attributeDeclarationMarkup = getAttributeDeclarationMarkup(attributeDeclarationName);
if (attributeDeclarationMarkup == null) {
attributeDeclarationMarkup = getAttributeDeclarationMarkup(// $NON-NLS-1$
elementDeclarationName + "." + attributeDeclarationName);
}
attributeDeclarationDocumentation = getAttributeDeclarationDocumentation(attributeDeclarationName);
if (attributeDeclarationDocumentation == null) {
attributeDeclarationDocumentation = getAttributeDeclarationDocumentation(// $NON-NLS-1$
elementDeclarationName + "." + attributeDeclarationName);
}
}
if (attributeDeclarationDocumentation != null) {
Integer oldInsertIndex = (Integer) repeatedDocumentationMap.get(attributeDeclarationDocumentation);
if (oldInsertIndex != null) {
// $NON-NLS-1$
String insertion = "<br>" + attributeDeclarationName;
attributeDocumentationBuffer.insert(oldInsertIndex.intValue(), insertion);
repeatedDocumentationMap.put(attributeDeclarationDocumentation, new Integer(oldInsertIndex.intValue() + insertion.length()));
} else {
if (attributeDocumentationBuffer.length() == 0) {
// $NON-NLS-1$
attributeDocumentationBuffer.append("<table cols=2 width='100%'>\n");
attributeDocumentationBuffer.append(// $NON-NLS-1$
"<tr>\n<th width=25% valign=top align=left><b>Attribute</b></th>\n");
attributeDocumentationBuffer.append(// $NON-NLS-1$
"<th width=75% valign=top align=left><b>Description</b></th>\n</tr>\n");
}
// $NON-NLS-1$
attributeDocumentationBuffer.append("<tr><td><b>");
if (attributeDeclarationMarkup != null) {
// $NON-NLS-1$ //$NON-NLS-2$
attributeDocumentationBuffer.append("<span class='" + attributeDeclarationMarkup + "'>");
}
attributeDocumentationBuffer.append(attributeDeclarationName);
int insertIndex = attributeDocumentationBuffer.length();
if (attributeDeclarationMarkup != null) {
// $NON-NLS-1$
attributeDocumentationBuffer.append("</span>");
}
// $NON-NLS-1$
attributeDocumentationBuffer.append("</b></td>\n<td valign=top>\n");
attributeDocumentationBuffer.append(attributeDeclarationDocumentation);
// $NON-NLS-1$
attributeDocumentationBuffer.append("</td></tr>");
repeatedDocumentationMap.put(attributeDeclarationDocumentation, new Integer(insertIndex));
}
}
if (attributeDeclarationMarkup != null) {
// $NON-NLS-1$ //$NON-NLS-2$
System.out.print("<span class='" + attributeDeclarationMarkup + "'>");
}
if (xsdAttributeUse.isRequired()) {
// $NON-NLS-1$
System.out.print("<b>");
System.out.print(attributeDeclarationName);
// $NON-NLS-1$
System.out.print("</b>");
} else {
System.out.print(attributeDeclarationName);
}
if (attributeDeclarationMarkup != null) {
// $NON-NLS-1$
System.out.print("</span>");
}
// $NON-NLS-1$
System.out.print(" = </tt>");
XSDSimpleTypeDefinition xsdSimpleTypeDefinition = xsdAttributeDeclaration.getTypeDefinition();
printSimpleTypeDefinition(xsdSimpleTypeDefinition);
if (xsdAttributeUse.getLexicalValue() != null) {
// $NON-NLS-1$
System.out.print(" : ");
if ("".equals(xsdAttributeUse.getLexicalValue())) {
// $NON-NLS-1$
// $NON-NLS-1$
System.out.print("\"\"");
} else {
System.out.print(xsdAttributeUse.getLexicalValue());
}
}
if (attributeUses.hasNext()) {
// $NON-NLS-1$
System.out.println("<br>");
}
}
if (xsdComplexTypeDefinition.getAttributeWildcard() != null) {
// $NON-NLS-1$
System.out.println("<br>");
System.out.println(// $NON-NLS-1$
"<span class='" + ALLOWS + // $NON-NLS-1$
"'><tt><em> { any attributes with non-schema namespace . . . }</em></tt></span>");
}
// $NON-NLS-1$
System.out.println("<tt>></tt><br>");
if (xsdComplexTypeDefinition.getContentType() instanceof XSDParticle) {
// $NON-NLS-1$
System.out.print("<tt><em> Content:</em> ");
printParticle((XSDParticle) xsdComplexTypeDefinition.getContentType(), elementDeclarationMarkup);
// $NON-NLS-1$
System.out.print("</tt>");
} else if (xsdComplexTypeDefinition.getContentType() instanceof XSDSimpleTypeDefinition) {
// $NON-NLS-1$
System.out.print("<b>***** simple</b>");
} else {
// $NON-NLS-1$
System.out.print("<b>{ **** empty }</b>");
}
// $NON-NLS-1$
System.out.println("<br>");
}
// $NON-NLS-1$
System.out.print("<tt></");
System.out.print(elementDeclarationName);
// $NON-NLS-1$
System.out.println("></tt>");
if (elementDeclarationMarkup != null) {
// $NON-NLS-1$
System.out.print("</div>");
}
// $NON-NLS-1$
System.out.println("</div>");
String elementDeclarationDocumentation = getElementDeclarationDocumentation(key);
if (elementDeclarationDocumentation != null) {
// $NON-NLS-1$
System.out.println("<div class='reprBody'>");
System.out.println(elementDeclarationDocumentation);
// $NON-NLS-1$
System.out.println("</div>");
}
if (attributeDocumentationBuffer.length() > 0) {
// $NON-NLS-1$
System.out.println("<div class='reprBody'>");
System.out.print(attributeDocumentationBuffer);
// $NON-NLS-1$
System.out.println("</table>");
// $NON-NLS-1$
System.out.println("</div>");
}
// $NON-NLS-1$
System.out.println("</td></tr></table>");
// $NON-NLS-1$
System.out.println("</div>");
}
// System.out.println("<h1>Built-in Datatypes</h1>");
// $NON-NLS-1$
String typeContentHeaderDocumentation = getContentDocumentation("type-header");
if (typeContentHeaderDocumentation != null) {
System.out.println(typeContentHeaderDocumentation);
}
// $NON-NLS-1$
System.out.println("<table border=true cols=3 width='100%'>");
// $NON-NLS-1$
System.out.println("<tr>");
// $NON-NLS-1$
System.out.println("<th width=33% valign=top align=left><b>Type</b></th>");
// $NON-NLS-1$
System.out.println("<th width=33% valign=top align=left><b>Properties & Facets</b></th>");
// $NON-NLS-1$
System.out.println("<th width=34% valign=top align=left><b>Effective Value</b></th>");
// $NON-NLS-1$
System.out.println("</tr>");
// $NON-NLS-1$
XSDSimpleTypeDefinition anyTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("anyType");
XSDSimpleTypeDefinition anySimpleTypeDefinition = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition(// $NON-NLS-1$
"anySimpleType");
XSDSimpleTypeDefinition anyListTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
anyListTypeDefinition.setVariety(XSDVariety.LIST_LITERAL);
// $NON-NLS-1$
anyListTypeDefinition.setName("anyListType");
anyListTypeDefinition.setItemTypeDefinition(anySimpleTypeDefinition);
xsdSchema.getContents().add(anyListTypeDefinition);
// $NON-NLS-1$
anyListTypeDefinition.getElement().setAttribute(XSDConstants.ID_ATTRIBUTE, "anyListType");
XSDSimpleTypeDefinition anyUnionTypeDefinition = xsdFactory.createXSDSimpleTypeDefinition();
anyUnionTypeDefinition.setVariety(XSDVariety.UNION_LITERAL);
// $NON-NLS-1$
anyUnionTypeDefinition.setName("anyUnionType");
anyUnionTypeDefinition.getMemberTypeDefinitions().add(anySimpleTypeDefinition);
xsdSchema.getContents().add(anyUnionTypeDefinition);
// $NON-NLS-1$
anyUnionTypeDefinition.getElement().setAttribute(XSDConstants.ID_ATTRIBUTE, "anyUnionType");
List allTypeDefinitions = new ArrayList(xsdSchema.getTypeDefinitions());
allTypeDefinitions.add(0, anySimpleTypeDefinition);
allTypeDefinitions.add(0, anyTypeDefinition);
for (Iterator i = allTypeDefinitions.iterator(); i.hasNext(); ) {
XSDTypeDefinition xsdTypeDefinition = (XSDTypeDefinition) i.next();
if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition && xsdTypeDefinition.getElement() != null && xsdTypeDefinition.getName().equals(xsdTypeDefinition.getElement().getAttribute(XSDConstants.ID_ATTRIBUTE))) {
XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) xsdTypeDefinition;
// $NON-NLS-1$
System.out.println("<tr>");
// $NON-NLS-1$ //$NON-NLS-2$
System.out.println("<a name='" + xsdSimpleTypeDefinition.getName() + "-simple-type'>");
// $NON-NLS-1$
System.out.println("<td>");
boolean isPrimitive = XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety() && xsdSimpleTypeDefinition.getBaseTypeDefinition() == anySimpleTypeDefinition;
if (isPrimitive) {
// $NON-NLS-1$
System.out.print("<b>");
}
System.out.print(getSimpleTypeDefinitionLink(xsdSimpleTypeDefinition));
if (isPrimitive) {
// $NON-NLS-1$
System.out.print("</b>");
}
for (XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition; ; baseTypeDefinition = baseTypeDefinition.getBaseTypeDefinition()) {
String javaClass = (String) schemaTypeToJavaClassMap.get(baseTypeDefinition.getName());
if (javaClass != null) {
// $NON-NLS-1$
System.out.println("<br> <br>");
if (baseTypeDefinition == xsdSimpleTypeDefinition) {
// ) //$NON-NLS-1$
System.out.print("<b>");
}
// $NON-NLS-1$
int dotIndex = javaClass.lastIndexOf(".");
// $NON-NLS-1$
System.out.print("<font size=-2>");
System.out.print(javaClass.substring(0, dotIndex + 1));
// $NON-NLS-1$
System.out.print("</font><br> ");
System.out.print(javaClass.substring(dotIndex + 1));
if (baseTypeDefinition == xsdSimpleTypeDefinition) {
// (
// $NON-NLS-1$
System.out.print("<b>");
}
System.out.println();
break;
}
}
// $NON-NLS-1$
System.out.println("<br>");
// $NON-NLS-1$
System.out.println("</td>");
// $NON-NLS-1$
System.out.println("</a>");
StringBuffer validFacets = new StringBuffer();
StringBuffer effectiveFacetValues = new StringBuffer();
// $NON-NLS-1$
validFacets.append("variety<br>\n");
effectiveFacetValues.append(xsdSimpleTypeDefinition.isSetVariety() ? // $NON-NLS-1$
"<b>" + xsdSimpleTypeDefinition.getVariety() + "</b>" : // $NON-NLS-1$ //$NON-NLS-2$
"<em>absent</em>");
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
// $NON-NLS-1$
validFacets.append("base type definition<br>\n");
XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
while (baseTypeDefinition.getName() == null) {
baseTypeDefinition = baseTypeDefinition.getBaseTypeDefinition();
}
// $NON-NLS-1$
effectiveFacetValues.append("<a href='#");
effectiveFacetValues.append(baseTypeDefinition.getName());
// $NON-NLS-1$
effectiveFacetValues.append("-simple-type'>");
effectiveFacetValues.append(baseTypeDefinition.getName());
// $NON-NLS-1$
effectiveFacetValues.append("</a><br>\n");
// $NON-NLS-1$
validFacets.append("ordered<br>\n");
effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
"anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
"*" : xsdSimpleTypeDefinition.getOrderedFacet().getValue().getName());
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
// $NON-NLS-1$
validFacets.append("bounded<br>\n");
effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
"anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
"*" : // $NON-NLS-1$ //$NON-NLS-2$
xsdSimpleTypeDefinition.getBoundedFacet().isValue() ? "true" : "false");
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
// $NON-NLS-1$
validFacets.append("cardinality<br>\n");
effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
"anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
"*" : XSDCardinality.COUNTABLY_INFINITE_LITERAL == xsdSimpleTypeDefinition.getCardinalityFacet().getValue() ? "countably infinite" : // $NON-NLS-1$
xsdSimpleTypeDefinition.getCardinalityFacet().getValue().getName());
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
// $NON-NLS-1$
validFacets.append("numeric<br>\n");
effectiveFacetValues.append(// $NON-NLS-1$ //$NON-NLS-2$
"anyUnionType".equals(xsdSimpleTypeDefinition.getName()) ? // $NON-NLS-1$ //$NON-NLS-2$
"*" : // $NON-NLS-1$ //$NON-NLS-2$
xsdSimpleTypeDefinition.getNumericFacet().isValue() ? "true" : "false");
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
if (xsdSimpleTypeDefinition.getValidFacets().contains("length")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("length<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveLengthFacet() != null) {
XSDLengthFacet xsdLengthFacet = xsdSimpleTypeDefinition.getEffectiveLengthFacet();
if (xsdLengthFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdLengthFacet.getValue());
if (xsdLengthFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("minLength")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("minLength<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveMinLengthFacet() != null) {
XSDMinLengthFacet xsdMinLengthFacet = xsdSimpleTypeDefinition.getEffectiveMinLengthFacet();
if (xsdMinLengthFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdMinLengthFacet.getValue());
if (xsdMinLengthFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("maxLength")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("maxLength<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet() != null) {
XSDMaxLengthFacet xsdMaxLengthFacet = xsdSimpleTypeDefinition.getEffectiveMaxLengthFacet();
if (xsdMaxLengthFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdMaxLengthFacet.getValue());
if (xsdMaxLengthFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("pattern")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("pattern<br>\n");
if (xsdSimpleTypeDefinition.getEffectivePatternFacet() != null) {
// XSDPatternFacet xsdPatternFacet =
// xsdSimpleTypeDefinition.getEffectivePatternFacet();
// $NON-NLS-1$
effectiveFacetValues.append("*");
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("enumeration")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("enumeration<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() != null) {
XSDEnumerationFacet xsdEnumerationFacet = xsdSimpleTypeDefinition.getEffectiveEnumerationFacet();
for (Iterator enumerators = xsdEnumerationFacet.getValue().iterator(); enumerators.hasNext(); ) {
String enumerator = (String) enumerators.next();
effectiveFacetValues.append(enumerator);
// $NON-NLS-1$
effectiveFacetValues.append(" ");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("whiteSpace")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("whiteSpace<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveWhiteSpaceFacet() != null) {
XSDWhiteSpaceFacet xsdWhiteSpaceFacet = xsdSimpleTypeDefinition.getEffectiveWhiteSpaceFacet();
if (xsdWhiteSpaceFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdWhiteSpaceFacet.getValue());
if (xsdWhiteSpaceFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("maxInclusive")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("maxInclusive<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveMaxFacet() instanceof XSDMaxInclusiveFacet) {
XSDMaxInclusiveFacet xsdMaxInclusiveFacet = (XSDMaxInclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMaxFacet();
if (xsdMaxInclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdMaxInclusiveFacet.getValue());
if (xsdMaxInclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("maxExclusive")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("maxExclusive<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveMaxFacet() instanceof XSDMaxExclusiveFacet) {
XSDMaxExclusiveFacet xsdMaxExclusiveFacet = (XSDMaxExclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMaxFacet();
if (xsdMaxExclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdMaxExclusiveFacet.getValue());
if (xsdMaxExclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("minInclusive")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("maxInclusive<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveMinFacet() instanceof XSDMinInclusiveFacet) {
XSDMinInclusiveFacet xsdMinInclusiveFacet = (XSDMinInclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMinFacet();
if (xsdMinInclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdMinInclusiveFacet.getValue());
if (xsdMinInclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("minExclusive")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("maxExclusive<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveMinFacet() instanceof XSDMinExclusiveFacet) {
XSDMinExclusiveFacet xsdMinExclusiveFacet = (XSDMinExclusiveFacet) xsdSimpleTypeDefinition.getEffectiveMinFacet();
if (xsdMinExclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdMinExclusiveFacet.getValue());
if (xsdMinExclusiveFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("totalDigits")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("totalDigits<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveTotalDigitsFacet() != null) {
XSDTotalDigitsFacet xsdTotalDigitsFacet = xsdSimpleTypeDefinition.getEffectiveTotalDigitsFacet();
if (xsdTotalDigitsFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdTotalDigitsFacet.getValue());
if (xsdTotalDigitsFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
if (xsdSimpleTypeDefinition.getValidFacets().contains("fractionDigits")) {
// $NON-NLS-1$
// $NON-NLS-1$
validFacets.append("fractionDigits<br>\n");
if (xsdSimpleTypeDefinition.getEffectiveFractionDigitsFacet() != null) {
XSDFractionDigitsFacet xsdFractionDigitsFacet = xsdSimpleTypeDefinition.getEffectiveFractionDigitsFacet();
if (xsdFractionDigitsFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("<b>");
}
effectiveFacetValues.append(xsdFractionDigitsFacet.getValue());
if (xsdFractionDigitsFacet.isFixed()) {
// $NON-NLS-1$
effectiveFacetValues.append("</b>");
}
}
// $NON-NLS-1$
effectiveFacetValues.append("<br>\n");
}
// $NON-NLS-1$
System.out.println("<td>");
System.out.print(validFacets);
// $NON-NLS-1$
System.out.println("</td>");
// $NON-NLS-1$
System.out.print("<td>");
System.out.println(effectiveFacetValues);
// $NON-NLS-1$
System.out.println("</td>");
// $NON-NLS-1$
System.out.println("</tr>");
}
}
// $NON-NLS-1$
System.out.println("</table>");
// $NON-NLS-1$
String appendixContentHeaderDocumentation = getContentDocumentation("appendix-header");
if (appendixContentHeaderDocumentation != null) {
System.out.println(appendixContentHeaderDocumentation);
}
}
use of org.eclipse.xsd.util.XSDResourceImpl in project webtools.sourceediting by eclipse.
the class XSDSchemaLocatorImpl method locateSchema.
/**
* @see org.eclipse.xsd.util.XSDSchemaLocator#locateSchema(org.eclipse.xsd.XSDSchema,
* java.lang.String, java.lang.String, java.lang.String)
*/
public XSDSchema locateSchema(XSDSchema xsdSchema, String namespaceURI, String rawSchemaLocationURI, String resolvedSchemaLocationURI) {
XSDSchema result = null;
String baseLocation = xsdSchema.getSchemaLocation();
String resolvedURI = URIResolverPlugin.createResolver().resolve(baseLocation, namespaceURI, rawSchemaLocationURI);
if (resolvedURI == null) {
resolvedURI = resolvedSchemaLocationURI;
}
try {
ResourceSet resourceSet = xsdSchema.eResource().getResourceSet();
URI uri = URI.createURI(resolvedURI);
Resource r = resourceSet.getResource(uri, false);
XSDResourceImpl resolvedResource = null;
if (r instanceof XSDResourceImpl) {
resolvedResource = (XSDResourceImpl) r;
} else {
String physicalLocation = URIResolverPlugin.createResolver().resolvePhysicalLocation(baseLocation, namespaceURI, resolvedURI);
InputStream inputStream = resourceSet.getURIConverter().createInputStream(URI.createURI(physicalLocation));
resolvedResource = (XSDResourceImpl) resourceSet.createResource(URI.createURI("*.xsd"));
resolvedResource.setURI(uri);
resolvedResource.load(inputStream, null);
}
result = resolvedResource.getSchema();
} catch (IOException exception) {
// It is generally not an error to fail to resolve.
// If a resource is actually created,
// which happens only when we can create an input stream,
// then it's an error if it's not a good schema
}
return result;
}
use of org.eclipse.xsd.util.XSDResourceImpl in project webtools.sourceediting by eclipse.
the class XSDModelAdapter method createSchema.
public XSDSchema createSchema(Document document) {
try {
// (cs) note that we always want to ensure that a
// schema model object get's returned
schema = XSDFactory.eINSTANCE.createXSDSchema();
resourceSet = XSDSchemaImpl.createResourceSet();
resourceSet.getAdapterFactories().add(new XSDSchemaLocationResolverAdapterFactory());
IDOMNode domNode = (IDOMNode) document;
String baseLocation = domNode.getModel().getBaseLocation();
// TODO... gotta pester SSE folks to provide 'useful' baseLocations
//
URI uri = getURI(baseLocation);
Resource resource = new XSDResourceImpl();
resource.setURI(uri);
schema = XSDFactory.eINSTANCE.createXSDSchema();
resource.getContents().add(schema);
resourceSet.getResources().add(resource);
schema.setDocument(document);
final Element element = document.getDocumentElement();
if (element != null) {
// Force the loading of the "meta" schema for schema instance instance.
//
String schemaForSchemaNamespace = element.getNamespaceURI();
XSDSchemaImpl.getSchemaForSchema(schemaForSchemaNamespace);
}
IRunnableWithProgress setElementOperation = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
// Use the animated flavour as we don't know beforehand how many ticks we need.
// The task name will be displayed by the code in XSDResourceImpl.
// $NON-NLS-1$
monitor.beginTask("", IProgressMonitor.UNKNOWN);
Map loadOptions = resourceSet.getLoadOptions();
loadOptions.put(XSDResourceImpl.XSD_PROGRESS_MONITOR, monitor);
schema.setElement(element);
loadOptions.remove(XSDResourceImpl.XSD_PROGRESS_MONITOR);
}
};
IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
try {
progressService.busyCursorWhile(setElementOperation);
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
// attach an adapter to keep the XSD model and DOM in sync
//
modelReconcileAdapter = new XSDModelReconcileAdapter(document, schema);
domNode.getModel().addModelStateListener(modelReconcileAdapter);
} catch (Exception ex) {
ex.printStackTrace();
}
return schema;
}
use of org.eclipse.xsd.util.XSDResourceImpl in project tmdm-studio-se by Talend.
the class XSDParser method main.
/**
* Print a particle with markup for the document.
*
* @param xsdParticle a particle.
* @param rootElementDeclarationMarkup the markup.
*/
/*
* public void printParticle(XSDParticle xsdParticle, String rootElementDeclarationMarkup) { int minOccurs =
* xsdParticle.getMinOccurs(); int maxOccurs = xsdParticle.getMaxOccurs(); XSDTerm xsdTerm = xsdParticle.getTerm();
* if (xsdTerm instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElementDeclaration =
* (XSDElementDeclaration) xsdTerm; String elementDeclarationName = xsdElementDeclaration.getName(); String
* elementDeclarationMarkup = null; if (rootElementDeclarationMarkup == null) { elementDeclarationMarkup =
* getElementDeclarationMarkup(elementDeclarationName); } if (elementDeclarationMarkup != null) {
* System.out.print("<span class='"); System.out.print(elementDeclarationMarkup); System.out.print("'>"); }
* System.out.print("<a href='#" + getLocalAnchor(xsdElementDeclaration) + "'>");
* System.out.print(elementDeclarationName.charAt(0)); System.out.print("</a>");
* System.out.print(elementDeclarationName.substring(1)); if (elementDeclarationMarkup != null) {
* System.out.print("</span>"); } if (minOccurs == 0) { if (maxOccurs == 1) { System.out.print("?"); } else {
* System.out.print("*"); } } else if (maxOccurs == -1) { System.out.print("+"); } } else if (xsdTerm instanceof
* XSDModelGroup) { XSDModelGroup xsdModelGroup = (XSDModelGroup) xsdTerm; List particles =
* xsdModelGroup.getParticles(); boolean isRedundant = particles.size() == 1 && minOccurs == 1 && maxOccurs == 1 &&
* ((XSDParticle) particles.get(0)).getTerm() instanceof XSDModelGroup; if (!isRedundant) { System.out.print("(");
* // ) }
*
* String separator = XSDCompositor.CHOICE_LITERAL == xsdModelGroup .getCompositor() ? " | " :
* XSDCompositor.SEQUENCE_LITERAL == xsdModelGroup .getCompositor() ? ", " : " & ";
*
* for (Iterator i = xsdModelGroup.getParticles().iterator(); i .hasNext();) { XSDParticle childParticle =
* (XSDParticle) i.next(); printParticle(childParticle, rootElementDeclarationMarkup); if (i.hasNext()) {
* System.out.print(separator); } }
*
* if (!isRedundant) { // ( System.out.print(")"); if (minOccurs == 0) { if (maxOccurs == 1) {
* System.out.print("?"); } else { System.out.print("*"); } } else if (maxOccurs == -1) { System.out.print("+"); } }
* } else if (xsdTerm instanceof XSDWildcard) { System.out.print("<em>{any}</em>"); } }
*/
/**
* Print a simple type definition for the document.
*
* @param xsdSimpleTypeDefinition a simple type definition in the schema for schema.
*/
/*
* public void printSimpleTypeDefinition( XSDSimpleTypeDefinition xsdSimpleTypeDefinition) { if
* (xsdSimpleTypeDefinition == null) { } else if (xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() != null) {
* List value = xsdSimpleTypeDefinition.getEffectiveEnumerationFacet() .getValue(); if (value.size() > 1) {
* System.out.print("("); } for (Iterator enumerators = value.iterator(); enumerators.hasNext();) { String
* enumerator = enumerators.next().toString(); System.out.print("<em>"); System.out.print(enumerator);
* System.out.print("</em>"); if (enumerators.hasNext()) { System.out.print(" | "); } } if (value.size() >
* 1) { System.out.print(")"); } } else if (xsdSimpleTypeDefinition.getElement() != null &&
* xsdSimpleTypeDefinition.getElement().hasAttribute( XSDConstants.ID_ATTRIBUTE)) { System.out.print("<a href='#" +
* xsdSimpleTypeDefinition.getName() + "-simple-type'>"); System.out.print(xsdSimpleTypeDefinition.getName());
* System.out.print("</a>"); } else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition .getVariety()) {
* System.out.print("("); for (Iterator members = xsdSimpleTypeDefinition .getMemberTypeDefinitions().iterator();
* members.hasNext();) { XSDSimpleTypeDefinition memberTypeDefinition = (XSDSimpleTypeDefinition) members .next();
* printSimpleTypeDefinition(memberTypeDefinition); if (members.hasNext()) { System.out.print(" | "); } }
* System.out.print(")"); } else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition .getVariety()) {
* System.out.print("List of "); printSimpleTypeDefinition(xsdSimpleTypeDefinition
* .getItemTypeDefinition()); } else if (xsdSimpleTypeDefinition.getName() != null) { if
* ("public".equals(xsdSimpleTypeDefinition.getName())) { System.out.print("<a target='Part2' href='" +
* XSDConstants.PART2 + "#anyURI'>anyURI</a> "); System.out.print("<a target='Errata' href='" + errata +
* "#pfipublic'><em>public</em></a>"); } else { System.out.print("<b><em>");
* System.out.print(xsdSimpleTypeDefinition.getName()); System.out.print("</em></b>"); } } else if
* (xsdSimpleTypeDefinition.getEffectivePatternFacet() != null) { //
* System.out.print(xsdSimpleTypeDefinition.getEffectivePatternFacet().getLexicalValue());
*
* System.out.print("<em>"); System.out.print("<a target='Part1' href='" + XSDConstants.PART1 +
* "#coss-identity-constraint'>"); System.out.print("a restricted xpath expression"); System.out.print("</a>");
* System.out.print("</em>"); } else { System.out.print("***"); } }
*/
public static void main(String[] args) {
try {
/*
* String xsd = ""; FileInputStream fis = new FileInputStream(
* "/home/bgrieder/workspace/XCBL35/XCBL35.xsd"); BufferedReader br = new BufferedReader(new
* InputStreamReader(fis, "utf-8")); String line; while ((line = br.readLine()) != null) xsd += line + "\n";
*
* XSDParser parser = new XSDParser(); parser.loadAndPrint(xsd);
*/
// $NON-NLS-1$
FileWriter fw = new FileWriter("/tmp/xcb35sr.xsd");
// $NON-NLS-1$
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
// $NON-NLS-1$
String xsdFile = "/home/bgrieder/workspace/XCBL35/XCBL35.xsd";
ResourceSet resourceSet = new ResourceSetImpl();
XSDResourceImpl xsdResource = (XSDResourceImpl) resourceSet.getResource(URI.createFileURI(xsdFile), true);
/*
* XSDResourceImpl res = new XSDResourceImpl(URI.createFileURI(xsdFile));
*/
XSDSchema xsdSchema = xsdResource.getSchema();
String header = // $NON-NLS-1$ //$NON-NLS-2$
"<xsd:schema " + "elementFormDefault=\"qualified\" " + // $NON-NLS-1$
"targetNamespace=\"rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd\" " + "xmlns=\"rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd\" " + // $NON-NLS-1$ //$NON-NLS-2$
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">";
fw.write(header);
Iterator it = xsdSchema.getElementDeclarations().iterator();
for (; it.hasNext(); ) {
XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) it.next();
// if ("Order".equals(elementDeclaration.getName())) {
fw.write(Util.nodeToString(elementDeclaration.getElement()).replaceAll("xmlns:xsd=\"http:\\/\\/www\\.w3\\.org\\/2001\\/XMLSchema\"", // $NON-NLS-1$ //$NON-NLS-2$
""));
// }
}
it = xsdSchema.getTypeDefinitions().iterator();
for (; it.hasNext(); ) {
XSDTypeDefinition typedef = (XSDTypeDefinition) it.next();
fw.write(Util.nodeToString(typedef.getElement()));
}
// $NON-NLS-1$
String footer = "</xsd:schema>";
fw.write(footer);
fw.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
use of org.eclipse.xsd.util.XSDResourceImpl in project webtools.sourceediting by eclipse.
the class XSDImpl method buildXSDModel.
/**
* Given uri for an XML Schema document, parse the document and build
* corresponding CMDocument node.
*
* @param uri -
* the uri for an XML Schema document
* @return the corresponding CMDocument node.
*/
public static XSDSchema buildXSDModel(String uriString) {
XSDSchema xsdSchema = null;
try {
// if XML Schema for Schema is requested, get it through schema model
if (uriString.endsWith("2001/XMLSchema.xsd")) {
xsdSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
} else {
ResourceSet resourceSet = new ResourceSetImpl();
// resourceSet.getAdapterFactories().add(new XSDSchemaLocationResolverAdapterFactory());
resourceSet.getAdapterFactories().add(new XSDSchemaLocatorAdapterFactory());
URI uri = createURI(uriString);
// CS : bug 113537 ensure we perform physical resolution before opening a stream for the resource
//
String physicalLocation = URIResolverPlugin.createResolver().resolvePhysicalLocation("", "", uriString);
InputStream inputStream = resourceSet.getURIConverter().createInputStream(URI.createURI(physicalLocation));
XSDResourceImpl resource = (XSDResourceImpl) resourceSet.createResource(URI.createURI("*.xsd"));
resource.setURI(uri);
resource.load(inputStream, null);
xsdSchema = resource.getSchema();
}
} catch (Exception e) {
}
return xsdSchema;
}
Aggregations