private boolean serializeCompactRDFStructProp(XMPNode node,int indent,boolean hasRDFResourceQual) throws XMPException, IOException {
  boolean hasAttrFields=false;
  boolean hasElemFields=false;
  boolean emitEndTag=true;
  for (Iterator ic=node.iterateChildren(); ic.hasNext(); ) {
    XMPNode field=(XMPNode)ic.next();
    if (canBeRDFAttrProp(field)) {
      hasAttrFields=true;
    }
 else {
      hasElemFields=true;
    }
    if (hasAttrFields && hasElemFields) {
      break;
    }
  }
  if (hasRDFResourceQual && hasElemFields) {
    throw new XMPException("Can't mix rdf:resource qualifier and element fields",XMPError.BADRDF);
  }
  if (!node.hasChildren()) {
    write(" rdf:parseType=\"Resource\"/>");
    writeNewline();
    emitEndTag=false;
  }
 else   if (!hasElemFields) {
    serializeCompactRDFAttrProps(node,indent + 1);
    write("/>");
    writeNewline();
    emitEndTag=false;
  }
 else   if (!hasAttrFields) {
    write(" rdf:parseType=\"Resource\">");
    writeNewline();
    serializeCompactRDFElementProps(node,indent + 1);
  }
 else {
    write('>');
    writeNewline();
    writeIndent(indent + 1);
    write(RDF_STRUCT_START);
    serializeCompactRDFAttrProps(node,indent + 2);
    write(">");
    writeNewline();
    serializeCompactRDFElementProps(node,indent + 1);
    writeIndent(indent + 1);
    write(RDF_STRUCT_END);
    writeNewline();
  }
  return emitEndTag;
}

private boolean serializeCompactRDFStructProp ( XMPNode node , int indent , boolean hasRDFResourceQual ) throws XMPException , IOException { boolean hasAttrFields = false ; boolean hasElemFields = false ; boolean emitEndTag = true ; for ( Iterator ic = node . iterateChildren ( ) ; ic . hasNext ( ) ; ) { XMPNode field = ( XMPNode ) ic . next ( ) ; if ( canBeRDFAttrProp ( field ) ) { hasAttrFields = true ; } else { hasElemFields = true ; } if ( hasAttrFields && hasElemFields ) { break ; } } if ( hasRDFResourceQual && hasElemFields ) { throw new XMPException ( "Can't mix rdf:resource qualifier and element fields" , XMPError . BADRDF ) ; } if ( ! node . hasChildren ( ) ) { write ( " rdf:parseType=\"Resource\"/>" ) ; writeNewline ( ) ; emitEndTag = false ; } else if ( ! hasElemFields ) { serializeCompactRDFAttrProps ( node , indent + 1 ) ; write ( "/>" ) ; writeNewline ( ) ; emitEndTag = false ; } else if ( ! hasAttrFields ) { write ( " rdf:parseType=\"Resource\">" ) ; writeNewline ( ) ; serializeCompactRDFElementProps ( node , indent + 1 ) ; } else { write ( '>' ) ; writeNewline ( ) ; writeIndent ( indent + 1 ) ; write ( RDF_STRUCT_START ) ; serializeCompactRDFAttrProps ( node , indent + 2 ) ; write ( ">" ) ; writeNewline ( ) ; serializeCompactRDFElementProps ( node , indent + 1 ) ; writeIndent ( indent + 1 ) ; write ( RDF_STRUCT_END ) ; writeNewline ( ) ; } return emitEndTag ; }
serializes a struct property .
