private void printUniqueConstraint(ORASSNode node, int numOfTabs) {
		String tableName    = node.getName();
		String originalName = node.getOriginalName();
		
		if (tableName.equals(originalName)) {
		
			writer.println(getTabs(numOfTabs)     + "<xs:unique name=\""+tableName+"_Uniq"+"\">");
			writer.println(getTabs(numOfTabs + 1) + "<xs:selector xpath=\".//"+tableName+"/*\"/>");
			
			List<ColumnDetail> cols = node.getAttributes();
			Iterator<ColumnDetail> colsItr = cols.iterator();
			while(colsItr.hasNext()) {
				ColumnDetail column = colsItr.next();
				if (column.isUnique())
					writer.println(getTabs(numOfTabs + 1) + "<xs:field xpath=\""+column.getName()+"\"/>");
			}
			
			writer.println(getTabs(numOfTabs) + "</xs:unique>");
			writer.println();
		}
		
		List<ORASSNode> children = node.getChildren();
		Iterator<ORASSNode> itr = children.iterator();
		while (itr.hasNext()) {
			ORASSNode child = itr.next();
			String childName = child.getName();
			if (!processedTables.contains(childName)) {
				processedTables.add(childName);
				printUniqueConstraint(child, numOfTabs);
			}
		}
	}