XQuery - Return empty tag

Hi all,
I have the following query:
SELECT XMLElement("BEAVS",
XMLAgg(
XMLElement("BEAV",
XMLForest(d.par_row_id NBEAV)
).getclobval() AS "BEAV_RESULT"
FROM beav d
The XMLElement "BEAV" doesn't return any values but I still need to have the tag <BEAV></BEAV>... anyone?
Thank you,
Pedro.

Does something like this work.. I can't test since I don't have the table definitions or data...
    SELECT XMLElement
             "BEAV_RESULT",
             XMLForest
               d.cod_boletim NBEAV,
               d.cod_entidade_fiscalizadora ENTIDADE_FISCALIZADORA
             XMLElement
               "ERRO_FORMATO",        
                 SELECT XMLAgg
                          XMLElement
                            "ERRO",
                            XMLForest
                              bb.cod_erro CODIGO_ERRO,
                              bb.nome_erro DESCRICAO_ERRO
                   FROM TABLE(pc_aaa.fn_bbb(d.cod_acidente)) aa, table_b bb
                  WHERE aa.COLUMN_VALUE = bb.cod_erro
                    AND bb.tp_erro = 'M'
             XMLELEMENT
               "ERRO_LEVE",
                 SELECT XMLAgg
                          XMLElement
                            "ERRO",
                            XMLForest
                              f.cod_erro CODIGO_ERRO,
                              b.nome_erro DESCRICAO_ERRO
                   FROM table_b b, table_c f
                  WHERE b.cod_erro = f.cod_erro
                    AND f.cod_acidente = d.cod_acidente
                    AND b.tp_erro = 'L'
           ).getclobval()
      FROM table_a d
     WHERE xpto = 123456;

Similar Messages

  • Query creating XML returns empty tags when no data

    Hello everyone,
    I have a problem that I just can't seem to solve.
    I have the following query:
    select
                xmlelement
                   "users",
                   xmlagg
                      xmlelement
                         "user",
                         xmlelement
                            "username",
                            e.pin
                         xmlagg
                            xmlelement
                               "details",
                               xmlforest
                                  e.password as "password"
                                 ,e.first_name as "forename"
                                 ,e.surname as "surname"
                                 ,'0' as "retired"
                                 ,e.email_address as "email"
                                 ,e.telephone_number as "phone"
                                 ,'No External Ref' as "externalRef"
                                 ,add_months(sysdate,+60) as "expiryDate"
                ) xml_out
             from   aqaost_examiners e
             group by e.pin;The query returns the XML in the desired structure.
    But the problem I have is that when there is no data found by the query, I still get a single row returned with the following: <users></users>
    I've tried so many things to try to have the query return nothing at all if there is no data to be found, but I just can't do it without something else going wrong (messing up the XML structure etc).
    Please can someone help or point me in the right direction?
    Thank you very much in advance!
    Robin

    odie_63 wrote:
    Hi,
    Peter,
    It is the GROUP BY that does that.Actually no, the GROUP BY relates to the innermost XMLAgg and is mandatory if e.pin is not unique.
    Leave it out, and you also seem to have one to many XMLAGG(?)That's assuming e.pin is unique in the table (which is probably a fair assumption in this case).
    In fact, the behaviour comes from the topmost XMLAgg :
    SQL> select xmlelement("users",
    2           xmlagg(
    3             xmlelement("user",
    4               xmlelement("username", e.empno)
    5             , xmlelement("details",
    6                 xmlforest(
    7                   e.ename as "name"
    8                 , e.job as "job"
    9                 )
    10               )
    11             )
    12           )
    13         ) xml_out
    14  from scott.emp e
    15  where 1 = 0
    16  ;
    XML_OUT
    <users></users>As with other aggregate functions (like SUM or AVG) adding a GROUP BY 'something' solves the problem :
    SQL> select xmlelement("users",
    2           xmlagg(
    3             xmlelement("user",
    4               xmlelement("username", e.empno)
    5             , xmlelement("details",
    6                 xmlforest(
    7                   e.ename as "name"
    8                 , e.job as "job"
    9                 )
    10               )
    11             )
    12           )
    13         ) xml_out
    14  from scott.emp e
    15  where 1 = 0
    16  group by null
    17  ;
    no rows selectedRobin,
    If the innermost XMLAgg is really necessary, then you can use a subquery :
    select xmlelement("users", v.users)
    from (
    select xmlagg(
    xmlelement("user",
    xmlelement("username", e.empno)
    , xmlagg(
    xmlelement("details",
    xmlforest(
    e.ename as "name"
    , e.job as "job"
    ) as users
    from scott.emp e
    group by e.empno
    ) v
    where v.users is not null
    Hello there,
    Thank you very much! That sorted out the issue (adding the Group By Null)...it works a treat! I hadn't even considered that.
    I didn't need the second XMLAGG in the end either, as I discovered when tinkering to try to sort the issue, but thank you for being so comprehensive with your reply.
    Here is my finished result:
    select xmlelement("users",
                 xmlagg(
                   xmlelement("user",
                     xmlelement("username", e.pin)
                   , xmlelement("details",
                       xmlforest(
                                  e.password as "password"
                                 ,e.first_name as "forename"
                                 ,e.surname as "surname"
                                 ,'0' as "retired"
                                 ,e.email_address as "email"
                                 ,e.telephone_number as "phone"
                                 ,'No External Ref' as "externalRef"
                                 ,add_months(sysdate,+60) as "expiryDate"
              ).getclobval() xml_out
       from aqaost_examiners e
       group by null;Thank you so much again.
    Robin

  • Validate empty tags using xquery

    Hi All,
    I have a question regarding xquery flwor exrpession. My scenarion is I need to validate an xml input file wether one of its elements is empty so I created an xquery to validate. However, I receive an error when I try to make an input file that has a repeating element.
    Below is my xquery for validating empty tags:
    declare namespace cred="http://www.pldt.com.ph/eai/service/component/CreditService/";
    declare namespace com="http://www.pldt.com.ph/eai/Common";
    declare variable $inputdata as element(cred:PushQuote) external;
    let $QuoteNumber := data($inputdata/PushQuote/com:QuoteNumber)
    let $AccountNumber := data($inputdata/PushQuote/com:CustomerAccountNumber)
    let $QuoteLineItemList := $inputdata/PushQuote/com:LineItemList
    for $data in $inputdata
    return
    if (fn:string-length($QuoteNumber) > 0 and
    fn:string-length($AccountNumber) > 0)
    then
    for $quoteLineItem in $QuoteLineItemList
    return
    if (fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:LineNumber)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:ProductCatalogId)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:Product)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:Quantity)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:Mrc)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:Currency)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:LastUpdateDate)) > 0 and
    fn:string-length(data($quoteLineItem/com:QuoteLineItem/com:LastUpdatedBy)))
    then
    "0"
    else
    "1"
    else
    "1"
    Below is my input xml document:
    <cred:PushQuote xmlns:com="http://www.pldt.com.ph/eai/Common" xmlns:cred="http://www.pldt.com.ph/eai/service/component/CreditService/">
    <PushQuote>
    <com:QuoteNumber>ZXCV-233</com:QuoteNumber>
    <com:CustomerAccountNumber>1213654889</com:CustomerAccountNumber>
    <!--Optional:-->
    <com:LineItemList>
    *<!--1 or more repetitions:-->*
    <com:QuoteLineItem>
    <com:LineNumber>3</com:LineNumber>
    <com:ProductCatalogId>string</com:ProductCatalogId>
    <com:Product>asdf</com:Product>
    <com:Quantity>string</com:Quantity>
    <com:Mrc>3</com:Mrc>
    <com:Currency>USD</com:Currency>
    <com:LastUpdateDate>string</com:LastUpdateDate>
    <com:LastUpdatedBy>string</com:LastUpdatedBy>
    </com:QuoteLineItem>
    <com:QuoteLineItem>
    <com:LineNumber>3</com:LineNumber>
    <com:ProductCatalogId>string</com:ProductCatalogId>
    <com:Product>1234</com:Product>
    <com:Quantity>string</com:Quantity>
    <com:Mrc>3</com:Mrc>
    <com:Currency>USD</com:Currency>
    <com:LastUpdateDate>string</com:LastUpdateDate>
    <com:LastUpdatedBy>string</com:LastUpdatedBy>
    </com:QuoteLineItem>
    <com:QuoteLineItem>
    <com:LineNumber>3</com:LineNumber>
    <com:ProductCatalogId>string</com:ProductCatalogId>
    <com:Product></com:Product>
    <com:Quantity>string</com:Quantity>
    <com:Mrc>3</com:Mrc>
    <com:Currency>USD</com:Currency>
    <com:LastUpdateDate>string</com:LastUpdateDate>
    <com:LastUpdatedBy>string</com:LastUpdatedBy>
    </com:QuoteLineItem>          
    </com:LineItemList>
    </PushQuote>
    </cred:PushQuote>

    atheek1 wrote:
    Try this:
    <ResultDoc>
    for data in $inputData/PushQuote
    return
    if( put all your if conditions here) then
    <result> 1</result>
    else
    <result>0</result>
    </ResultDoc>
    This will return a xml :
    <ResultDoc>
    <result>1</result> <!.. one result per PushQuote in input !>
    <result>0</result>
    </ResultDoc>yup I've tried that, and now I'm able to get result, my problem now is I can't get the result that is equal to 1 even if I use xpath.
    please see my updated code:
    declare namespace cred="http://www.pldt.com.ph/eai/service/component/CreditService/";
    declare namespace com="http://www.pldt.com.ph/eai/Common";
    declare function local:CheckValidation($PushQuote as element(cred:PushQuote))
    let $QuoteNumber := data($PushQuote/PushQuote/com:QuoteNumber)
    let $AccountNumber := data($PushQuote/PushQuote/com:CustomerAccountNumber)
    let $QuoteLineItemList := $PushQuote/PushQuote/com:LineItemList/com:QuoteLineItem
    return
    <status>
    for $QuoteLineItem in $QuoteLineItemList
    return
    if (fn:string-length(data($QuoteNumber)) > 0 and
    fn:string-length(data($AccountNumber)) > 0 and
    fn:string-length(data($QuoteLineItem/com:Quantity)) > 0 and
    fn:string-length(data($QuoteLineItem/com:Product)) > 0 and
    fn:string-length(data($QuoteLineItem/com:Mrc)) > 0 and
    fn:string-length(data($QuoteLineItem/com:Currency)) > 0 and
    fn:string-length(data($QuoteLineItem/com:LastUpdateDate)) > 0 and
    fn:string-length(data($QuoteLineItem/com:LastUpdatedBy)) > 0)
    then
    <code>0</code>
    else
    <code>1</code>
    </status>
    declare variable $PushQuote as element(cred:PushQuote) external;
    let $returnValue := local:CheckValidation($PushQuote)
    return
    $returnValue
    $returnValue[code=1]/code
    I've tried putting xpath like this to get result = 1 but no luck :)

  • Specifying empty tag style

    Hi all. I'm using dbms_xmlquery.useNullAttributeIndicator, and for a reason I'd rather not go into I need the tags to be separate open-close tags (<tag></tag>) instead of the more elegant <tag/> tag. I'd also like to suppress the NULL="TRUE" attribute if possible. I'm open to changing our routine to use DBMS_XMLGEN if it helps in the above. Many thanks in advance for your help.

    Hi,
    With DBMS_XMLGEN, you can get rid of the NULL attribute, but empty tags will appear in the short form :
    SQL> set serveroutput on
    SQL> DECLARE
      2    ctx    dbms_xmlgen.ctxHandle;
      3    sqlstr varchar2(4000) := 'SELECT * FROM scott.emp WHERE rownum = 1';
      4    res    clob;
      5  BEGIN
      6    ctx := dbms_xmlgen.newContext(sqlstr);
      7    dbms_xmlgen.setNullHandling(ctx, dbms_xmlgen.EMPTY_TAG);
      8    res := dbms_xmlgen.getXML(ctx);
      9    dbms_xmlgen.closeContext(ctx);
    10    dbms_output.put_line(res);
    11  END;
    12  /
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
      <EMPNO>7369</EMPNO>
      <ENAME>SMITH</ENAME>
      <JOB>CLERK</JOB>
      <MGR>7902</MGR>
      <HIREDATE>17/12/80</HIREDATE>
      <SAL>800</SAL>
      <COMM/>
      <DEPTNO>20</DEPTNO>
    </ROW>
    </ROWSET>
    PL/SQL procedure successfully completed
    On the latest release (11.2), and only for particular cases, you might be able to do what you want with XQuery.
    See § Oracle XQuery Extension-Expression Pragmas on this page :
    http://download.oracle.com/docs/cd/E11882_01/appdev.112/e16659/xdb_xquery.htm
    Here's also an example :
    SELECT XMLSerialize(
    document
    XMLQuery(
      '(#ora:view_on_null empty #)
       <ROWSET>
        for $i in fn:collection("oradb:/SCOTT/EMP")/ROW
        where $i/EMPNO = 7566
        return $i
       </ROWSET>
      returning content
    as clob
    FROM dual;
    <ROWSET><ROW><EMPNO>7566</EMPNO><ENAME>JONES</ENAME><JOB>MANAGER</JOB><MGR>7839</MGR><HIREDATE>1981-04-02</HIREDATE><SAL>2975</SAL><COMM></COMM><DEPTNO>20</DEPTNO></ROW></ROWSET>

  • Is there a way to modify the style sheet so that it transforms an XML document with empty tags as tag / ?

    I have extracted some code from codeproject to
    reindent an XML document. Does anyone know how I can modify the stylesheet to make it so that the transform of an XML file will result in empty tags showing up as <tag /> instead of <tag></tag>?
    // http://www.codeproject.com/Articles/43309/How-to-create-a-simple-XML-file-using-MSXML-in-C
    MSXML2::IXMLDOMDocumentPtr FormatDOMDocument(MSXML2::IXMLDOMDocumentPtr pDoc)
    LPCSTR const static szStyleSheet =
    R"!(<?xml version="1.0" encoding="utf-8"?>)!"
    R"!(<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">)!"
    R"!( <xsl:output method="xml" indent="yes"/>)!"
    R"!( <xsl:template match="@* | node()">)!"
    R"!( <xsl:copy>)!"
    R"!( <xsl:apply-templates select="@* | node()"/>)!"
    R"!( </xsl:copy>)!"
    R"!( </xsl:template>)!"
    R"!(</xsl:stylesheet>)!";
    MSXML2::IXMLDOMDocumentPtr pXmlStyleSheet;
    pXmlStyleSheet.CreateInstance(__uuidof(MSXML2::DOMDocument60));
    pXmlStyleSheet->loadXML(szStyleSheet);
    MSXML2::IXMLDOMDocumentPtr pXmlFormattedDoc;
    pXmlFormattedDoc.CreateInstance(__uuidof(MSXML2::DOMDocument60));
    CComPtr<IDispatch> pDispatch;
    HRESULT hr = pXmlFormattedDoc->QueryInterface(IID_IDispatch, (void**)&pDispatch);
    if (SUCCEEDED(hr))
    _variant_t vtOutObject;
    vtOutObject.vt = VT_DISPATCH;
    vtOutObject.pdispVal = pDispatch;
    vtOutObject.pdispVal->AddRef();
    hr = pDoc->transformNodeToObject(pXmlStyleSheet, vtOutObject);
    //By default it is writing the encoding = UTF-16. Let us change the encoding to UTF-8
    // <?xml version="1.0" encoding="UTF-8"?>
    MSXML2::IXMLDOMNodePtr pXMLFirstChild = pXmlFormattedDoc->GetfirstChild();
    // A map of the a attributes (vesrsion, encoding) values (1.0, UTF-8) pair
    MSXML2::IXMLDOMNamedNodeMapPtr pXMLAttributeMap = pXMLFirstChild->Getattributes();
    MSXML2::IXMLDOMNodePtr pXMLEncodNode = pXMLAttributeMap->getNamedItem(_T("encoding"));
    pXMLEncodNode->PutnodeValue(_T("UTF-8")); //encoding = UTF-8
    return pXmlFormattedDoc;
    Or, if there is some other method for reindenting a MSXML2::IXMLDOMDocumentPtr object where I can specify how I want empty tags to be stored, that would be great too.  However, I don't want it to lose its status of an MSXML2::IXMLDOMDocumentPtr object.
     I.e. I would like to still perform operations on the result as if it was still an MSXML2::IXMLDOMDocumentPtr object.
    Thanks,
    A
    Adrian

    If anyone is interested, I got an answer on StackOverflow
    here.
    Adrian

  • How to remove empty tags respecting the schema contraints?

    Hi,
    I'm generating an XML document with XSLT. This document have some empty tags. My question is about to remove all empty tags only if they are defined as optionnals in the schema.
    Is this possible with the DOM?
    Thanks in advance,
    Philippe

    With DOM3 validation api, elements/attributes may be checked if they may be removed.
    -Check if the element is empty; getFirstChild() method returns null.
    -Check if the element may be removed with DOM 3 Validation API.

  • How to delete empty tags after xml-import

    Hello collegues,
    I'm totally new in this forum so excuse me if I make a mistake, but I've a little question.
    I've imported text and images with a xml-import but sometimes empty tags (the colored invisible blocks) are in my text, with the result that I can't Find/Change on double-returns.
    Does anybody know an awnser to this matter? I would love to write an apple-script that will find/change this so i don't have to look after all my pages.
    Thank you very much in advance.

    ThePictureCreator wrote:
    ...I can't Find/Change on double-returns.
    What's your search query? I think you should be able to, with either a grep find of "\r+" or a normal text find of "^p^p". InDesign pretends like the tag-holding characters aren't there for the purpose of search. But you will lose the empty elements along with the extra returns. Maybe that is the problem?
    Jeff

  • Marshalling HashMap with JAXB 2.0 - empty tags & ill schema

    Hi all,
    I expected JAXB 2.0 to be capable to handle basic classes like HashMap, but it does not look so. I have two classes: SimpleNegotiationManager which has a property HashMap in which are stored the instances of SimpleInitiatedConversation:
    package xml;
    import javax.xml.bind.annotation.*;
    import java.util.HashMap;
    @XmlAccessorType(AccessType.FIELD)
    @XmlRootElement
    public class SimpleNegotiationManager {
        @XmlElement
        protected HashMap<String, SimpleInitiatedConversation> initiatedConversations;
        public SimpleNegotiationManager() {
        public HashMap<String, SimpleInitiatedConversation> getInitiatedConversations() {
            if (initiatedConversations == null) {
                initiatedConversations = new HashMap();
            return initiatedConversations;
        public void setInitiatedConversations(HashMap<String, SimpleInitiatedConversation> initiatedConversations) {
            this.initiatedConversations = initiatedConversations;
    }and
    package xml;
    import javax.xml.bind.annotation.*;
    import java.util.ArrayList;
    import java.util.List;
    @XmlAccessorType(AccessType.FIELD)
    @XmlType
    public class SimpleInitiatedConversation {
        @XmlElement
        protected List<String> messages;
        protected String conversationID;
        protected int protocolState;
        public SimpleInitiatedConversation() {
        public List<String> getMessages() {
            if (messages == null) {
                messages = new ArrayList();
            return messages;
        public void setMessages(List<String> messages) {
            this.messages = messages;
        public int getProtocolState() {
            return protocolState;
        public void setProtocolState(int protocolState) {
            this.protocolState = protocolState;
        public String getConversationID() {
            return conversationID;
        public void setConversationID(String conversationID) {
            this.conversationID = conversationID;
    }When I marshalled SimpleNegotiationManager while the HashMap was filled with several <String,SimpleInitiatedConversation> entries, in the output were empty tags initiatedConversations:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <simpleNegotiationManager>
      <initiatedConversations>
      </initiatedConversations>
    </simpleNegotiationManager>When I used schemagen to generate a schema, it produced:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:complexType name="simpleInitiatedConversation">
        <xs:sequence>
          <xs:element name="messages" type="xs:string" maxOccurs="unbounded" minOccurs="0"/>
          <xs:element name="conversationID" type="xs:string" minOccurs="0"/>
          <xs:element name="protocolState" type="xs:int"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element name="simpleNegotiationManager" type="simpleNegotiationManager"/>
      <xs:complexType name="simpleNegotiationManager">
        <xs:sequence>
          <xs:element name="initiatedConversations" type="hashMap" minOccurs="0"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="hashMap">
        <xs:complexContent>
          <xs:extension base="abstractMap">
            <xs:sequence/>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="abstractMap" abstract="true"/>
    </xs:schema>Particularly the description of HashMap seems ill - there is not specified that the HashMap has keys String and values SimpleInitiatedConversation.
    Unfortunatelly, the j2s-xmlAdapter-field example available with JAXB 2.0 is more complicated than I need. I just need to store/load HashMap into/from XML and I do not care what it looks like. Is it possible to avoid extending XmlJavaTypeAdaptor for a simple storing a HashMap into XML? Perhaps I use improper annotations in the source code, but I cannot get it working. Any clue?

    Ok i figured out one way of doing this by using some classes from JAXP...
    SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema s = null;
    try{
        s = sf.newSchema(new File("Sources/schema/test.xsd"));                    
    }catch(Exception e){
        System.err.println("Exception e: " + e.getMessage());
    marshaller.setSchema(s);
    //MyValidationHandler class implements the ValidationEventHandler interface
    MyValidationHandler gv = new MyValidationHandler();
    marshaller.setEventHandler(gv);If anyone has something to add let me know!!

  • How to generate empty tag using XMLForest

    Hi,
    I am creating an XML document using XMLAgg, XMLForest and XMlElement functions.
    At some point I have an XMLForest embedded in the other XMLForest
    XMLForest( e.indicator as "col1",
               e.participant_id as "col2",
      XMLForest( tableAlias.col11 as "address1",
                 tableAlias.col12 as "address2",            
               ) as "items",
    )           and within the last one I have some expressions which are empty, so the XML tags are not generated, however I have to have an empty tags:
    <address2></address2>I tried to replace an expression using "NVL" or "DECODE", but the results were the same.
    I also tried to replace an embedded XMLForest with an XMLElement :
    XMLForest( e.indicator as "col1",
               e.participant_id as "col2",
      *XMLElement("items"*
                 *XMLElement("address1"),*
                 *XMLElement("address2")*
               *) as "items",*)           however it created 2 <items> tags :
        <items>
             <items>
                <address1>value</address1>
                <address2></address2>
             </items>
         </items> I am working with Oracle 11.2.0 db.
    Is there any way to generate an empty tag when using XMLForest function?
    thank you in advance.
    Edited by: user624274 on Apr 3, 2013 8:52 AM
    Edited by: user624274 on Apr 3, 2013 8:53 AM

    Hello Odie_63.
    Your argument is valid, but it does not mean the solution I provided is bad.
    If you are concerned about the size of the result, it is simple, you can use like:
    REPLACE(XMLForest( NVL(e.indicator, '#NULLValue#') as "col1",  NVL(e.participant_id, '#NULLValue#') as "col2").getClobVal(), '#NULLValue#', '')
    According to Oracle documentation, REPLACE is smart and will return a CLOB (not a varchar2) because it changes the type of return according to the type of the first parameter. So you will not have issues with size.
    I believe the first question was related to use the final result to record to a table or send to another system (to use as integration). If it will be used just in a select field, it does not matter if it is not there or if it is there as NULL, the select of the field will always return ''.
    Other hint, I never use xmltype to store on database, because it is not compatible with other databases or integration tools. I use CLOB because it is the natural serialization of the object and I can convert and work with it inside and outside Oracle.
    But that is up to the architect and/or developer. If the system is running only on Oracle and there is no integration, maybe xmltype will save a lot of time in conversions.
    Regards.
    Rodolpho

  • How can I control creation of empty tags when using ora:view syntax?

    I'm using XMLQuery and ora:view syntax to create xml resources in the database but I'd like to be able to prevent the creation of empty tags for null values in the table.
    CREATE OR REPLACE PROCEDURE proc_ctsi_build is
    XMLdoc XMLType;
    BEGIN
    DBMS_XDB.deleteResource('/public/CTSI/ctsi_phsall_rpt1.xml',1);
    SELECT XMLQuery(
    '<Progress_Report>
    <Personnel_Roster>
    {for $c in ora:view("CTSI_INVEST_SOURCE_V")
        let $username  := $c/ROW/COMMONS_USERNAME/text(),
    $expertise  := $c/ROW/AREA_OF_EXPERTISE/text()
         return
      <Investigator>
       <Commons_Username>{$username}</Commons_Username>
    <Area_of_Expertise>{$expertise}</Area_of_Expertise>
    </Investigator>}
    </Personnel_Roster>
    </Progress_Report>'
    RETURNING CONTENT) INTO XMLdoc FROM DUAL;
    IF(DBMS_XDB.CREATERESOURCE('/public/CTSI/ctsi_phsall_rpt1.xml', XMLdoc)) THEN
    DBMS_OUTPUT.PUT_LINE('Resource is created');
    ELSE
    DBMS_OUTPUT.PUT_LINE('Cannot create resource');
    END IF;
    COMMIT;
    END;
    In this example how can I prevent getting <Area_of_Expertise/> in my output when AREA_OF_EXPERTISE is null in the table?
    Thanks

    Hi,
    you can use if else conditions.
    {if ($expertise) then
    <Area_of_Expertise>{$expertise}</Area_of_Expertise>
    else ()}
    **not tested**
    Ants
    Message was edited by:
    Ants Hindpere

  • Creating empty-tag-elements with JAXB?

    Hi,
    is there any possibility to force JAXB to create empty-tag-elements? For example
    <exampletag attribute="value" />
    instead of
    <exampletag attribute="value">
    </exampletag>.
    I really need to close my tags in the described way but have found no possibility to do so.
    Thanks for your help
    Daniel

    Maybe this will help. I take advantage of the following behavior of the JAXB Marshaller to give me the form of output I require.
    When a class (element) has "null" content, the output is of the form <tagger id="Unique"/>. When it has "empty" content, the output is of the form <tagger id="Unique"></tagger>.
    Example code snippets:
    For "null" content:
    @XmlRootElement(name = "tagger")
    public class TagClose
      public void setId(String id) { this.id = id; }
      public String getId() { return this.id; }
      @XmlValue
      String content = null;
      @XmlAttribute(name="id")
      String id = null;
    }For "empty" content:
    @XmlRootElement(name = "tagger")
    public class TagClose
      public void setId(String id) { this.id = id; }
      public String getId() { return this.id; }
      @XmlValue
      String content = "";
      @XmlAttribute(name="id")
      String id = null;
    }

  • Empty Collections and Empty Tags

    It seems that empty collections from a cast or cursor result in an empty tag. For example, the following sql:select work.work_id medlineid,
    cursor(
    select
    databankname,
    db.accessionnumberlist_ref.accessionnumberlist accessionnumberlist
    from table(dbl.databanks) db
    order by databankname) databanklist,
    cast( multiset (
    select chemical_t(
    wrkchm.cas_registry_number,
    wrkchm.term)
    from work_chemicals wrkchm
    where wrkchm.work_id=work.work_id
    order by wrkchm.term) as chemicals_t) chemicallist
    from
    works work,
    databanklist_t_v dbl
    where
    work.work_id = 96264942
    and work.work_id = dbl.work_id(+)results in the following XML:<medlinecitationset>
    <medlinecitation num="1">
    <medlineid>96264942</medlineid>
    <databanklist/>
    <chemicallist/>
    </medlinecitation>
    </medlinecitationset>Is there a way to not have these empty tags appear?
    Thanks! -- John.
    null

    David, this is about understanding the use of, and differencies between tags and collections. This is a bit hard for many new users.
    First of all searching for collections and tags can *not* be done simultaneously. You can either work with one collection only, or you can search for pictures with one or more tags.
    Next collections should be used as either temporary work sets or for special occasions like specific vacations, trips or birthdays, e.g. "Anna 5 years". You say you have a collection named "Churches". I think would have made a TAG called "Churches" instead, because a tag is for general searches that can be combined. On the other hand I might have made a collection called "Church visits July 2005" or "Summer vacation 2005" or the like.
    Another difference is that pictures in a collection can be sorted manually by drag & drop, while pictures found via tags always are shown in the order chosen in the Photo Browser Arrangement box shown bottom left in the Organizer.

  • Not inlcude empty tag while invoking service from ESB

    The ESB receives a request with input xml which contains some empty tag. while ESB invokes the actual services the empty tags should not be included. can any one help how to achieve this?

    define that tag as optional in schema and don't map that element. This should help you.
    -Ramana.

  • Soft Returns in Tagged Text

    Our Pindar AgilityCMS content managment system flows text to an InDesign page using a special PlugIn.
    Some characters are stored natively (store an "a", get an "a" on the page), while other special characters are stored using Tagged Text or Unicode. A return can be either <0x000D> or \u000D. This is especially useful because we can output through one of four "channels".... InDesign, Quark, HTML or as entered in the content manager. The return can now be \p in Quark or <BR> in HTML.  A non-breaking space, for example, can be \u00A0 in the InDesign channel, &nbsp; in HTML or <\!s> in Quark. When we insert the "special character" in the Data Editor of our content system, it might be displayed as [sp], but it will resolve correctly regardless of which channel we publish to.
    The problem is that unlike Quark, Adobe does not provide for a "soft return" or forced line break. Sure, you can type one from the keyboard with shift+return, and purists will argue that you'd never want to store a soft (discretionary) return in any type of tagged text or a content management system. However, all our text is set flush left, ragged right, and we frequently want to force line breaks for readability, and do so consistently.
    Instead of:
    On Sale Now Buy One, Get
    One Free
    we always want
    On Sale Now
    Buy One, Get One Free
    Again, this is a problem whether you store your data in simple tagged text files, or if you bring it in via a complex PlugIn, as we do.
    There are many, many threads on this site and elsewhere that discuss this shortcoming. Does Adobe plan to support Soft Returns in Tagged Text with some kind of special tag?

    Your question is predicated on some false assumptions, and I'm afraid Peter, Peter, and Stix didn't quite pick that up in their replies. (This gives me pause since normally they're all very detail-oriented).
    As I told you when you posted in the thread from 2009, "InDesign Tagged Text supports forced line breaks just fine."
    You write:
    Does Adobe plan to support Soft Returns in Tagged Text with some kind of special tag?
    Adobe's import mechanism does indeed support soft returns. There's no need to speculate on Adobe's plans, which is the direction the other replies went to.
    With that in mind, let's move to your actual question:
    Our Pindar AgilityCMS content managment system flows text to an InDesign page using a special PlugIn. 
    Some characters are stored natively (store an "a", get an "a" on the page), while other special characters are stored using Tagged Text or Unicode. A return can be either <0x000D> or \u000D. This is especially useful because we can output through one of four "channels".... InDesign, Quark, HTML or as entered in the content manager. The return can now be \p in Quark or <BR> in HTML.  A non-breaking space, for example, can be \u00A0 in the InDesign channel, &nbsp; in HTML or <\!s> in Quark. When we insert the "special character" in the Data Editor of our content system, it might be displayed as [sp], but it will resolve correctly regardless of which channel we publish to.
    I think you need to address this question to your support channel for Pindar AgilityCMS. Indeed, in IDTT <000A> represents a shift-return. Here's a screenshot of a test textframe:
    and when exported to InDesign Tagged Text, it produces:
    <ASCII-MAC>
    <Version:7><FeatureSet:InDesign-Roman><ColorTable:=<Black:COLOR:CMYK:Process:0,0,0,1>>
    <DefineParaStyle:NormalParagraphStyle=<Nextstyle:NormalParagraphStyle>>
    <ParaStyle:NormalParagraphStyle>Paragraph one
    <ParaStyle:NormalParagraphStyle>Paragraph two<0x000A>P2/Line two
    I presume you have tried <0x000A> as discussed in the prior thread.
    I suppose it's remotely possible this is a Mac/PC issue, because the two operating systems do you different line break characters.
    Anyhow, once again, your criticism of InDesign and Adobe is false and unfair. And if you have a problem with a 3rd party plugin, those are really the people you need to talk to.
    Still, it might be wise to get it working with plain File > Place. Try testing my above IDTT file. Or exporting your own from a sample textframe like the one I used.

  • Soft return in tagged text file

    Hi, anyone has example of using a End of line (soft return)  in tagged text file?
    i tried using <0x000A> but it does not work. Advice needed.
    Tkz

    So it does. It also drops it if you export in GB 18030. I would file a bug report:
    https://www.adobe.com/cfusion/mmform/index.cfm?name=wishform
    Only workaround I can think of would be to enter some other unique character (maybe |?) and find/replace it in ID after bringing in the tagged text.
    Ken
    Hold on, I tried exporting tagged text and then bringing it back in. It's not dropping the forced line break. It's exporting it as a single Line Feed (hex 0a). And it interprets that as a forced line break when importing back in. My text editor ignores Line Feeds. I had to look at it in a hex editor to see the 0a.
    I don't know if that helps any. However you're producing the tagged text, you would need to be able to make it enter a line feed without the carriage return.
    Ken

Maybe you are looking for

  • Safari doesn't display pdf file from within Dropbox

    When I click on a link on a web page that takes me to a pdf file located in a shared Dropbox folder, Safari only gives me a solid black page and doesn't open the pdf file.  All the other browsers do, Chrome, Firefox and even IE.  How can I fix this? 

  • Content Versions getting Created Automatically/Unable to Check-in Originals

    Hello Guru's, Everytime when I try to check-in an original and save the DIR, two content versions of the originals is getting created.This is happening only when I do through the PLM Web UI. Hence I am not able to check-in documents through PLM Web U

  • Alert Log file

    Hi, I'm new at administrating a database (11.2.0.2 on OEL). 1) How often one need to see the alert log file? 2) Why are some Oracle errors not logged in the Alert Log?

  • Can't check or uncheck songs when importing CD

    I put in a CD and go to choose which songs I want to import and the check boxes are no longer there. I can't even go "select all" and "check all boxes". There are no boxes to check. How can I fix this? Thanks.

  • Cannot Install Oracle 9i

    I get this error when I try to install 9i in my machine Error in writing to directory c:\Documents\Vadd...\Locals~1\Temp\OraInstall2004-01-20_11_06_57AM.log Please ensure that this directory is writable and alteast 32 mb of disk space. Installation C