示例#1
0
 /// <summary>Appends a qualifier to the qualifier list and sets respective options.</summary>
 /// <param name="qualNode">a qualifier node.</param>
 /// <exception cref="Com.Adobe.Xmp.XMPException"></exception>
 public virtual void AddQualifier(Com.Adobe.Xmp.Impl.XMPNode qualNode)
 {
     AssertQualifierNotExisting(qualNode.GetName());
     qualNode.SetParent(this);
     qualNode.GetOptions().SetQualifier(true);
     GetOptions().SetHasQualifiers(true);
     // contraints
     if (qualNode.IsLanguageNode())
     {
         // "xml:lang" is always first and the option "hasLanguage" is set
         options.SetHasLanguage(true);
         GetQualifier().Add(0, qualNode);
     }
     else
     {
         if (qualNode.IsTypeNode())
         {
             // "rdf:type" must be first or second after "xml:lang" and the option "hasType" is set
             options.SetHasType(true);
             GetQualifier().Add(!options.GetHasLanguage() ? 0 : 1, qualNode);
         }
         else
         {
             // other qualifiers are appended
             GetQualifier().Add(qualNode);
         }
     }
 }
示例#2
0
        /// <summary>Removes one qualifier node and fixes the options.</summary>
        /// <param name="qualNode">qualifier to remove</param>
        public virtual void RemoveQualifier(Com.Adobe.Xmp.Impl.XMPNode qualNode)
        {
            PropertyOptions opts = GetOptions();

            if (qualNode.IsLanguageNode())
            {
                // if "xml:lang" is removed, remove hasLanguage-flag too
                opts.SetHasLanguage(false);
            }
            else
            {
                if (qualNode.IsTypeNode())
                {
                    // if "rdf:type" is removed, remove hasType-flag too
                    opts.SetHasType(false);
                }
            }
            GetQualifier().Remove(qualNode);
            if (qualifier.IsEmpty())
            {
                opts.SetHasQualifiers(false);
                qualifier = null;
            }
        }