Exemplo n.º 1
0
int XmlEnc_EncodingStyle_1 (OSCTXT* pctxt, EncodingStyle_1* pvalue, 
   const OSUTF8CHAR* elemName, const OSUTF8CHAR* nsPrefix)
{
   int stat = 0;

   if (elemName != 0) {
      stat = rtXmlEncStartElement (pctxt, elemName, nsPrefix, TRUE);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
   }

   { const OSUTF8CHAR* savedPrefix = nsPrefix;
   nsPrefix = rtXmlNSGetPrefix (pctxt, OSUTF8(
      "http://schemas.xmlsoap.org/soap/envelope/"));

   { OSRTDListNode* pnode = pvalue->head;
   while (0 != pnode) {
      stat = rtXmlEncUTF8Str (pctxt, ((const OSUTF8CHAR*)pnode->data)
         , OSUTF8(""), 0);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
      OSRTSAFEPUTCHAR (pctxt, ' ');
      pnode = pnode->next;
   }}
   nsPrefix = savedPrefix;
   }

   stat = rtXmlEncEndElement (pctxt, elemName, nsPrefix);
   if (stat != 0) return LOG_RTERR (pctxt, stat);

   return (stat);
}
Exemplo n.º 2
0
int XmlEnc_Model (OSCTXT* pctxt, Model* pvalue, const OSUTF8CHAR* elemName, 
   const OSUTF8CHAR* nsPrefix)
{
   int stat = 0;

   if (0 != elemName) {
      stat = rtXmlEncStartElement (pctxt, elemName, nsPrefix, FALSE);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
   }

   /* add attributes */
   { OSRTDListNode* pnode = pvalue->attr.head;
   size_t len;
   while (0 != pnode) {
      len = rtxUTF8LenBytes (pnode->data);

      stat = rtxCheckBuffer (pctxt, len + 1);
      if (stat != 0) return LOG_RTERR (pctxt, stat);

      OSRTPUTCHAR (pctxt, ' ');
      OSRTMEMCPY (pctxt, pnode->data, len);

      pnode = pnode->next;
   }}

   OSRTSAFEPUTCHAR (pctxt, '>');
   pctxt->flags &= ~OSTERMSTART;
   pctxt->state = OSXMLSTART;

   { const OSUTF8CHAR* savedPrefix = nsPrefix;
   nsPrefix = rtXmlNSGetPrefix (pctxt, OSUTF8(
      "http://www.w3.org/2002/xforms"));

   /* encode element14_list */

   { const OSUTF8CHAR* savedPrefix = nsPrefix;
   nsPrefix = rtXmlNSGetPrefix (pctxt, OSUTF8(
      "http://www.w3.org/2002/xforms"));

   { OSRTDListNode* pnode = pvalue->element14_list.head;
   while (0 != pnode) {
      stat = XmlEnc_Odf_Element14 (pctxt, *((Odf_Element14*)pnode->data)
         , 0, nsPrefix);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
      pnode = pnode->next;
   }}
   nsPrefix = savedPrefix;
   }

   nsPrefix = savedPrefix;
   }

   stat = rtXmlEncEndElement (pctxt, elemName, nsPrefix);
   if (stat != 0) return LOG_RTERR (pctxt, stat);

   return (stat);
}
Exemplo n.º 3
0
EXTXMLMETHOD int rtXmlEncTermStartElement (OSCTXT* pctxt)
{
    if (pctxt->state == OSXMLSTART && pctxt->flags & OSTERMSTART) {
        if (rtxCtxtTestFlag (pctxt, OSXMLC14N)) {
            int stat = rtXmlEncEndAttrC14N (pctxt);
            if (stat < 0) return LOG_RTERRNEW (pctxt, stat);
        }

        /* If empty element, terminate with '/>', otherwise '>' */
        if (pctxt->flags & OSEMPTYELEM)
            OSRTSAFEPUTCHAR (pctxt, '/');

        OSRTSAFEPUTCHAR (pctxt, '>');

        /* Indicate element is terminated */
        pctxt->flags &= ~(OSTERMSTART | OSEMPTYELEM);
    }
    return 0;
}
Exemplo n.º 4
0
EXTXMLMETHOD int SAX2XMLStreamCharacters 
(void *userData, const OSUTF8CHAR* chars, int length)
{
   OSCTXT* pctxt = (OSCTXT*) userData;
   if (pctxt->state == OSXMLSTART) {
      OSRTSAFEPUTCHAR (pctxt, '>');
   }
   rtXmlEncStringValue2 (pctxt, chars, length);
   pctxt->state = OSXMLDATA;
   return 0;
}
Exemplo n.º 5
0
int XmlEnc_Xcrdtype (OSCTXT* pctxt, Xcrdtype* pvalue, 
   const OSUTF8CHAR* elemName, const OSUTF8CHAR* nsPrefix)
{
   int stat = 0;

   if (elemName != 0) {
      stat = rtXmlEncStartElement (pctxt, elemName, nsPrefix, TRUE);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
   }

   { OSUINT32 xx1;
   for (xx1 = 0; xx1 < pvalue->n; xx1++) {
      stat = rtXmlEncDouble (pctxt, pvalue->elem[xx1], 0, 0, 0);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
      OSRTSAFEPUTCHAR (pctxt, ' ');
   }}
   stat = rtXmlEncEndElement (pctxt, elemName, nsPrefix);
   if (stat != 0) return LOG_RTERR (pctxt, stat);

   return (stat);
}
Exemplo n.º 6
0
EXTXMLMETHOD int rtXmlEncUnicodeData 
(OSCTXT* pctxt, const OSUNICHAR* value, OSUINT32 nchars)
{
   int step;
   OSUINT32 inbufx;
   OSUNICHAR wc;

   for (inbufx = 0; inbufx < nchars; inbufx++) {
      wc = value[inbufx];

      if (wc < 0x80) {
         char c = (char) wc;
         /* One byte sequence */
         OSRTSAFEPUTCHAR (pctxt, c);
      }
      else {
         char outbuf[10];
         int sz;

         for (step = 2; step < 6; ++step)
            if ((wc & encoding_mask[step - 2]) == 0)
               break;
         sz = step;

         /* Copy multi-byte sequence to output buffer */
         outbuf[0] = encoding_byte[step - 2];
         --step;
         do {
            outbuf[step] = (OSOCTET) (0x80 | (wc & 0x3f));
            wc >>= 6;
         }
         while (--step > 0);
         outbuf[0] |= wc;

         OSRTSAFEMEMCPY (pctxt, (void*)outbuf, sz);
      }
   }

   return 0;
}
Exemplo n.º 7
0
EXTXMLMETHOD int SAX2XMLStreamStartElement
(void *userData, const OSUTF8CHAR* localname, 
 const OSUTF8CHAR* qname, const OSUTF8CHAR* const* attrs)
{
   OSCTXT* pctxt = (OSCTXT*) userData;

   if (pctxt->state == OSXMLINIT) {
      rtXmlEncStartDocument (pctxt);
   }
   else if (pctxt->state == OSXMLSTART) {
      OSRTSAFEPUTCHAR (pctxt, '>');
   }
   if (pctxt->state != OSXMLDATA) {
      rtXmlEncIndent (pctxt);
   }
   pctxt->level++;
   pctxt->state = OSXMLSTART;

   /* Verify element will fit in encode buffer */

   if (0 == rtxCheckBuffer (pctxt, OSUTF8LEN(qname) + 1)) {
      /* Copy element QName to buffer */
      OSRTPUTCHAR (pctxt, '<');
      OSRTMEMCPY (pctxt, qname, OSUTF8LEN(qname));

      if (0 != attrs && 0 != attrs[0]) {
         OSUINT32 i = 0;
         while (0 != attrs[i]) {
            rtXmlEncUTF8Attr (pctxt, attrs[i], attrs[i+1]);
            i += 2;
         }
      }
   }
   if (0 != localname) {} /* to suppress level 4 warning */

   return 0;
}
Exemplo n.º 8
0
int XmlEnc_Detail (OSCTXT* pctxt, Detail* pvalue, const OSUTF8CHAR* elemName, 
   const OSUTF8CHAR* nsPrefix)
{
   int stat = 0;

   if (0 != elemName) {
      stat = rtXmlEncStartElement (pctxt, elemName, nsPrefix, FALSE);
      if (stat != 0) return LOG_RTERR (pctxt, stat);
   }

   /* add attributes */
   { OSRTDListNode* pnode = pvalue->attr.head;
   size_t len;
   while (0 != pnode) {
      len = rtxUTF8LenBytes (pnode->data);

      stat = rtxCheckBuffer (pctxt, len + 1);
      if (stat != 0) return LOG_RTERR (pctxt, stat);

      OSRTPUTCHAR (pctxt, ' ');
      OSRTMEMCPY (pctxt, pnode->data, len);

      pnode = pnode->next;
   }}

   OSRTSAFEPUTCHAR (pctxt, '>');
   pctxt->flags &= ~OSTERMSTART;
   pctxt->state = OSXMLSTART;

   { const OSUTF8CHAR* savedPrefix = nsPrefix;
   nsPrefix = rtXmlNSGetPrefix (pctxt, OSUTF8(
      "http://schemas.xmlsoap.org/soap/envelope/"));

   /* encode elem_list */

   { const OSUTF8CHAR* savedPrefix = nsPrefix;
   nsPrefix = rtXmlNSGetPrefix (pctxt, OSUTF8(
      "http://schemas.xmlsoap.org/soap/envelope/"));

   { OSRTDListNode* pnode = pvalue->elem_list.head;
   while (0 != pnode) {
      if (((OSXSDAny*)pnode->data)->t == OSXSDAny_xmlText) {
         stat = rtXmlEncAnyStr (pctxt, ((OSXSDAny*)pnode->data)->u.xmlText
            , OSUTF8(""), 0);
         if (stat != 0) return LOG_RTERR (pctxt, stat);
      }
      else {
         char buf[40];
         os_snprintf (buf, 40, "%d", ((OSXSDAny*)pnode->data)->t);
         rtxErrAddStrParm (pctxt, buf);
         return LOG_RTERR (pctxt, RTERR_INVOPT);
      }
      pnode = pnode->next;
   }}
   nsPrefix = savedPrefix;
   }

   nsPrefix = savedPrefix;
   }

   stat = rtXmlEncEndElement (pctxt, elemName, nsPrefix);
   if (stat != 0) return LOG_RTERR (pctxt, stat);

   return (stat);
}
Exemplo n.º 9
0
EXTXMLMETHOD int rtXmlEncStringValue2 
   (OSCTXT* pctxt, const OSUTF8CHAR* value, size_t valueLen)
{
   if (0 != value && 0 != *value) {
      size_t i;      
      if (rtxCtxtTestFlag (pctxt, OSXMLC14N)) {
         /* C14N text node */
         if (pctxt->state == OSXMLDATA) {
            for (i = 0; i < valueLen; i++) {
               switch (value[i]) {
               case '&':
                  OSRTSAFEMEMCPY (pctxt, "&amp;", 5);
                  break;
               case '<': 
                  OSRTSAFEMEMCPY (pctxt, "&lt;", 4);
                  break;
               case '>': 
                  OSRTSAFEMEMCPY (pctxt, "&gt;", 4);
                  break;
               case 0xD:
                  OSRTSAFEMEMCPY (pctxt, "&#xD;", 5);
                  break;
               default:
                  OSRTSAFEPUTCHAR (pctxt, value[i]);
               }
            }
         }
         else { /* C14N attribute node */
            for (i = 0; i < valueLen; i++) {
               switch (value[i]) {
               case '&':
                  OSRTSAFEMEMCPY (pctxt, "&amp;", 5);
                  break;
               case '"':
                  OSRTSAFEMEMCPY (pctxt, "&quot;", 6);
                  break;
               case 0x9:
                  OSRTSAFEMEMCPY (pctxt, "&#x9;", 5);
                  break;
               case 0xA:
                  OSRTSAFEMEMCPY (pctxt, "&#xA;", 5);
                  break;
               case 0xD:
                  OSRTSAFEMEMCPY (pctxt, "&#xD;", 5);
                  break;
               case '<': 
                  OSRTSAFEMEMCPY (pctxt, "&lt;", 4);
                  break;
               default:
                  OSRTSAFEPUTCHAR (pctxt, value[i]);
               }
            }
         }
      }
      else { /* not C14N */
         for (i = 0; i < valueLen; i++) {
            switch (value[i]) {
            case '<': 
               OSRTSAFEMEMCPY (pctxt, "&lt;", 4);
               break;
            case '>': 
               OSRTSAFEMEMCPY (pctxt, "&gt;", 4);
               break;
            case '&': 
               OSRTSAFEMEMCPY (pctxt, "&amp;", 5);
               break;
            case '\'': 
               OSRTSAFEMEMCPY (pctxt, "&apos;", 6);
               break;
            case '"': 
               OSRTSAFEMEMCPY (pctxt, "&quot;", 6);
               break;
            default:
               OSRTSAFEPUTCHAR (pctxt, value[i]);
            }
         }
      }
   }   
   OSRT_CHECK_EVAL_DATE1(pctxt);

   return 0;
}