Replace xml code when used as a xmltype converted from clob.

I am still new at all this so I will try to make sense.
I have the "sys_xmlgen" where it takes my clob_content which is a clob and converts it into the v_xml which is xmltype.
****code to show change of clob to xmltype.
SELECT sys_xmlgen(clob_content) INTO v_xml FROM xmltest2 WHERE item_id = v_item_id;
update xmltest2 set xml = v_xml where item_id = v_item_id;
**end of code
When you use sys_xmlgen it changes the xml into this example:
<?xml version="1.0"?>
<CLOB_CONTENT>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE metadata SYSTEM &quot;csdgm2.dtd&quot;&gt;
&lt;?xml-stylesheet href=&quot;FGDC_V2.xsl&quot; type=&quot;text/xsl&quot;?&gt;
&lt;metadata&gt;
&lt;idinfo&gt;
</CLOB_CONTENT>
I need to remove the <CLOB_CONTENT> tag and change some things such as the "&lt;" to a "<" and so on. But when I do a replace statement
select replace(clob_content, '&lt;', '<') into v_xml from xmltest2;
It says I can not do a clob into number.
Just to make myself clear, the clob_content is clob and v_xml is xmltype. SOOO I think that is where my problem is. Does anyone know the syntax to replace the code in my xml so that it looks like the original clob xml??
Any help would be appreciated.

I am still new at all this so I will try to make sense.
I have the "sys_xmlgen" where it takes my clob_content which is a clob and converts it into the v_xml which is xmltype.
****code to show change of clob to xmltype.
SELECT sys_xmlgen(clob_content) INTO v_xml FROM xmltest2 WHERE item_id = v_item_id;
update xmltest2 set xml = v_xml where item_id = v_item_id;
**end of code
When you use sys_xmlgen it changes the xml into this example:
?xml version="1.0"?>
<CLOB_CONTENT>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE metadata SYSTEM &quot;csdgm2.dtd&quot;&gt;
&lt;?xml-stylesheet href=&quot;FGDC_V2.xsl&quot; type=&quot;text/xsl&quot;?&gt;
&lt;metadata&gt;
&lt;idinfo&gt;
&lt;citation&gt;
&lt;citeinfo&gt;</CLOB_CONTENT>
I need to remove the <CLOB_CONTENT> tag and change some things such as the "<" to a "<" and so on. But when I do a replace statement
select replace(clob_content, '<', '<') into v_xml from xmltest2;
It says I can not do a clob into number.
Just to make myself clear, the clob_content is clob and v_xml is xmltype. SOOO I think that is where my problem is. Does anyone know the syntax to replace the code in my xml so that it looks like the original clob xml??
Any help would be appreciated.

Similar Messages

  • Values of return code when using dba_audit_session

    Is there anywhere I can look up the possible values for return code when using dba_audit_session?
    I am generating a report over the data and have so far only been able to provide the returncode and whether the username exists (ie username or "other" error)
    Thanks
    (using 9i)

    So far I have fathomed out:
    Return code: 0 everything OK
    Return code: 1017 wrong username or password
    Return code: 28000 locked account
    Return code: 28001 expired account

  • Omit the XML declaration when using the PHP MM_XSLTransform class

    Hi
    Is there any way to omit the XML declaration when using the
    PHP MM_XSLTransform class?
    When using the PHP MM_XSLTransform to transform some XML into
    HTML, the XML declaration is faithfully delivered, which is
    expected. In my case though this ends up in the body of the
    document and is not desired. I wish to choose that the XML
    declaration is not shown.
    I have tried to use the <xsl:output method="xml"
    encoding="utf-8" omit-xml-declaration="yes"/> in the XSL
    stylesheet but the declaration still appears.
    Any help?
    all the best
    Dave

    Jim20005 wrote:
    > I'm using XLS transfomation in DW for reading XML files.
    Now (I'm just back
    > form holiday), my webspace provider has updated to php
    5.1.5. I'm getting this
    > error:
    Comment out line 301 and add two new lines immediately after
    it like this:
    // $xml = DOMDocument::loadXML($content);
    $doc = new DOMDocument();
    $err = $doc->loadXML($content);
    This is part of a PHP 8.0.2 hotfix that can be obtained
    directly from
    Adobe support.
    David Powers
    Adobe Community Expert
    Author, "Foundation PHP for Dreamweaver 8" (friends of ED)
    http://foundationphp.com/

  • When using Iphoto to import photo from existing folder, what happens if I delete the photo in Iphoto ? Will the original file in the folder be deleted too?

    When using Iphoto to import photo from existing folder to iphoto, what happens if:
    1. I delete that photo in iphoto? will the original file in the folder be deleted too ?
    2.  when importing, does the hard disk store 2 versions of the photo, hence occupying additional space in the harddisk?

    1 - no  --  iPhoto only manages fiel within the iPhoto library - it does not ever do anything with files outside the library
    2 - No idea what you are asking - by default (and strongly recommended) iPhoto copies the original to the iPhoto library and you delete the source file outside the iPhoto library - iPhoto alwasy has at least two versions of every photo and some times three - it always have the original, a thumbnail and once a photo is modified a preview - this is not optional - if it is not what you want then iPhoto is not the correct progrtam to be using for phopto management
    LN

  • The problem is with the new operating system  and sending photo via email when used in my iPad.   From photo I selected 3 photos to send via email. I choose the upload key and choose to send by email. Typing text on the email is very slow.

    The problem is with the new operating system  and sending photo via email when used in my iPad.
    From photo I selected 3 photos to send via email. I choose the upload key and choose to send by email. Typing text on the email is very slow. This is solved by saving the email as a draft and opening the email again from mail.
    Can you amend he system to allow emails to be sent from photo as previously.

    Have you tried restarting or resetting your iPad?
    Restart: Press On/Off button until the Slide to Power Off slider appears, select Slide to Power Off and, after the iPad shuts down, then press the On/Off button until the Apple logo appears.
    Reset: Press the Home and On/Off buttons at the same time and hold them until the Apple logo appears (about 10 seconds). Ignore the "Slide to power off"

  • Replacing Xml Code Blocks

    Hi, Fellas
    I have a problem regarding an Xml document, where I need to remove
    blocks of xml code, if there are control characters found in a block. (you know those squares that sometimes appear). Of course i need to manipulate the code using
    Java API's
    What i want to do is when i find a control character (which could come
    anywhere inside a client node), I want to remove the entire client block from the document and return it as a string in a java class. In the example code below Two <client> blocks contain control characters, so those blocks has to be removed.
    I really cant think of an efficient way to do this. an Xml document may
    contain several hundreds of such client node blocks.
    Please, if any of u guys can think of mechanism it would be of great
    help
    Example Xml code
    <...>
    <client>
    <name>Charles Darwin������</name>
    <address>32, Vincent Av, London</address>
    <info>Bill Lawry</info>
    </client>
    <client>
    <name>Richie Benaud</name>
    <address>32, Vincent Av, London</address>
    <info>Some information goes here</info>
    </client>
    <client>
    <name>Bill Lawry����</name>
    <address>32, Vincent Av, London</address>
    <info>Some information goes here</info>
    </client>
    <client>
    <name>Mark Waugh</name>
    <address>32, Vincent Av, London</address>
    <info>Some information goes here</info>
    </client>
    <...>
    Appreciate your time
    Thanks
    Shiran.

    - load your XML file into a Document instance
    - Iterate thru the children Node instances, starting from the root
    - for each Node instance, call a checking method: if the method returns false, remove the Node instance from its parent
    - the checking method simply converts the Node instance into a String instance (using the toString() method), then checks the string contents (or seeks well
    known special characters into the string, if the special characters list is short enough). Of course, the use of regular expressions can be another way.
    Hope this helped,
    Regards.

  • Business Partner Code when using *

    Hi all,
    In Business Partner code when the user want's to see all Business Partner and makes "*" appears the BP code, BP Name and Foreign Name.
    All user see this information except one that doesn't see the Foreign Name.
    Why?

    Hi Ad,
    Thank you for your reply.
    "Foreign Name" is already select in the Form Setting.
    You say that "This is a setting per user" but i dont think so. In Form Setting of the "List of Business Partners" i add "Account Balance" to one user and ALL users see the same information.
    Best regards,
    Augusto Silva

  • Conversion failure when using PDF Pack to convert a publisher file

    Up until the last few months, I used acrobat 8 to convert my church's newsletter from Publisher to PDF for posting on our church website.  When we switched to Windows 8 in January my Acrobat 8 couldn't be installed.  We just registered for the PDF pack with the yearly subscription fee and I have tried twice to convert our most recent newsletter.  Both time the conversion failed with the second time sending the message that the file was too complex or too large to convert.
    What do I need to do to make Acrobat XI as least as capable as Acrobat 8 in converting publisher files?

    Hi eec hampton,
    Adobe PDF Pack and Acrobat XI are two different things. PDF Pack is an online service, whereas Acrobat XI is a much more current version of the Acrobat that you had on your computer until recently.
    There is a file size limit to the files that you convert with PDF Pack (100MB), but even when a file falls below that file size, the complexity of the file (how much text and graphics, and so on) can cause conversion failure. (You could be dealing with bandwidth issues, for example, as the file is uploaded to the Internet for conversion.)
    One option it to convert smaller portions of the newsletter. You can also download a free 30-day trial of Acrobat XI from www.adobe.com/products/acrobat.html, and convert your publisher document using that.
    Please let us know how it goes.
    Best,
    Sara

  • I am getting a 4310 code when trying to burn a cd from itunes

    does anyone know how to fix the 4310 code when i try to burn a cd - my computer is new

    The 9201 C Series module needs to be created under the FPGA Target
    (cRIO-910x) in the LabVIEW Project. You can either discover the module
    or create it by type. In case you haven't created the FPGA Target
    (cRIO-910x) under the cRIO Controller (cRIO-900x), you must do that
    first. You also have the option of discovering the cRIO-910x or to
    create it by type. I suggest you do it through discovery, so you don't
    need to manually configure the addresses.
    As how to create the items, that's done through right-click on the
    cRIO-900x and select New>>Targets and Devices.... It will pop up
    a dialog in which you expand FPGA Target and it will discover the FPGA
    Target. Similar steps are followed to create the 9201 module.
    If you don't see the FPGA Target and C Series module options, then you
    need to make sure NI-RIO 2.0 is installed in you computer.
    JMota

  • How to use .joboptions file while converting from Word to PDF

    Hi,
    I'm pretty new to Acrobat. I'm using Acrobat XI. I need to convert a word document to a PDF file which conforms to certain requirements described by a given .joboptions file. The .joboptions file can be opened by distiller, but as far as I know distiller is not invovled in the conversion (Word to PDF) process. So how can I make sure the converted PDF file meets the requirement described by the .joboptions file?

    Distiller is used when converting from Word to PDF, if you do it via the Acrobat panel, not the Adobe PDF printer or Word's internal Export to PDF command. If you've loaded your joboptions file in Distiller (via Settings - Add Adobe PDF Settings), then you will see it in the drop-down of Conversion Settings when you click the Preferences button in the Acrobat panel in Word.
    After you've selected your job options profile click the Create PDF button, and the file will be converted using the selected options.

  • How to replace XML special characters using Xpress e.g. ' = '

    Hellos
    I need to write some XML built from resource data.
    The resource data strings can contain anything e.g. & ' " < and > characters.
    How do I replace these characters with the strings & &apos; " etc.... from within Xpress?
    I try something like:-
    <set name='testchar'>
    <switch>
    <ref>thisLetter</ref>
    <case>
    <s>'</s>
    <s>&apos;</s>
    </case>
    <case>
    <s>"</s>
    <s>"</s>
    </case>
    <case default='true'>
    <ref>thisLetter</ref>
    </case>
    </switch>
    </set>
    But when saved the <s>&apos;</s> gets saved as <s>'</s>
    Is this impossible with Xpress forcing me to invoke my own Java class? (which is a pain to do because of internal politics re restarting of App Server).

    Hmmmm seems there is transformation in this set up too.
    What I am trying to do is to parse a string which may or may not contain XML special characters into an XML acceptable string.
    e.g. transform the surname O'Connor into O&apos ;Connor (with no embedded blank)
    I wish to write a rule which uses XPress language to achieve this.
    I want to convert the character ' into the string &apos ; (with no blank between apos and ;) and similar for the other XML specials.
    Is this possible?

  • ORA-03113 when using references in xmltype

    I get an 'ORA-03113: end-of-file on communication channel' if I try to use references in an xml schema on multiple levels. You can find an example below.
    Setup:
    exec dbms_session.reset_package;
    declare
    l_schema varchar2(32767) :='<?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="qualified"
    elementFormDefault="qualified"
    version="1.0"
    xmlns:xdb="http://xmlns.oracle.com/xdb"
    xdb:storeVarrayAsTable="false"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="T_NODE" xdb:SQLType="T_NODE">
    <xs:sequence>
    <xs:element name="NODE" type="T_NODE"/>
    <xs:element name="LEVEL" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    <xs:element name="NODE" type="T_NODE" xdb:defaultTable="T_NODE_REF"/>
    </xs:schema>';
    l_xml xmltype;
    l_url varchar2(1000) := 'NodeTest.xsd';
    begin
    begin
    execute immediate 'drop table T_NODE_REF';
    exception
    when others then null;
    end;
    begin
    execute immediate 'drop table T_NODE_XML';
    exception
    when others then null;
    end;
    begin
    dbms_xmlschema.deleteschema(
    schemaurl => l_url
    ,delete_option => dbms_xmlschema.delete_cascade_force
    exception
    when others then null;
    end;
    l_xml := xmltype.createxml(l_schema);
    dbms_xmlschema.registerschema (schemaurl => l_url
    ,schemadoc => l_xml
    ,gentables => true
    execute immediate 'CREATE TABLE T_NODE_XML OF XMLTYPE XMLTYPE STORE AS OBJECT RELATIONAL XMLSCHEMA "' || l_url || '" ELEMENT "NODE"';
    end;
    The script:
    declare
    l_reference ref xmltype;
    function rec(
    i_level pls_integer
    ) return ref xmltype
    is
    l_url varchar2(1000) := 'NodeTest.xsd';
    l_ref ref xmltype := null;
    l_new_ref ref xmltype := null;
    l_node t_node;
    l_level pls_integer;
    l_node_xml xmltype;
    begin
    if i_level > 0 then
    l_level := i_level - 1;
    l_ref := rec(l_level);
    else
    l_ref := null;
    end if;
    l_node := new t_node(null, l_ref, i_level);
    l_node_xml := xmltype.createxml(xmlData => l_node, schema => l_url, element => 'NODE', validated => 1);
    dbms_output.put_line(dbms_lob.substr(l_node_xml.getClobVal, amount => 200, offset => 1));
    insert into T_NODE_XML t values(l_node_xml) returning ref(t) into l_new_ref;
    commit;
    return l_new_ref;
    end;
    begin
    l_reference := rec(1);
    end;
    Any idea how to overcome this issue?
    Thanks in advance

    Your previous reply never said anything about commenting out dbms_output so how was I supposed to see the variations you were trying?<br><br>
    You need to continue this discussion with Oracle as to why you getting the specific ORA-0600 that you are. This assumes you have a valid support contract. You are getting an internal Oracle error. I'm not Oracle nor do I know the inner workings of their system. If not, Google and maybe the XML DB forum might be able to help you with this issue. They will want to know your version (4 digits) and may question your hammer use of .delete_cascade_force when deleting the schema. This should only be a last resort to use that level I know. It's probably not related to your issue but may come up.

  • Error in SAP code when using VL02n

    I am trying to use VL02n to do a PGI (post goods issue).  The problem just started today when we activated a requirement on an output type.  This error does not occur in development but only in Test.  Below is the short dump of the error.  Does anybody have any ideas what could have gone wrong when we activated the output type requirement?
    Information on where terminated                                                       
        The termination occurred in the ABAP program "SAPLKKBL" in                        
         "K_KKB_LIST_DISPLAY".                                                            
        The main program was "RSM13000 ".                                                                               
    The termination occurred in line 418 of the source code of the (Include)          
         program "LKKBLU01"                                                               
        of the source code of program "LKKBLU01" (when calling the editor 4180).          
        The program "SAPLKKBL" was started in the update system.                          
      388     l_fieldcat_state = '2'.                                                       
      389     l_sort_state     = '2'.                                                       
      390     call function 'ALV_EXPORT_TO_BUFFER_KKBLO'                                    
      391         exporting                                                                 
      392              is_ltdxkey             = ls_ltdxkey                                  
      393 *            I_LANGU                = SY-LANGU                                    
      394              it_fieldcat_kkblo      = gt_stack-it_fieldcat                        
      395              i_fieldcat_kkblo_state = l_fieldcat_state                            
      396              it_sort_kkblo          = gt_stack-it_sort                            
      397              i_sort_kkblo_state     = l_sort_state                                
      398              it_filter_kkblo        = gt_stack-t_filter                           
      399              is_layout_kkblo        = gt_stack-is_layout                          
      400         exceptions                                                                
      401              no_key                 = 0                                           
      402              no_export              = 0                                           
      403              others                 = 0.                                          
      404     if sy-subrc ne 0.                                                             
      405     endif.                                                                        
      406   endif.                                                                          
      407                                                                               
    408 *... Export Stack to Memory                                                       
      409   perform stack_memory_export.                                                    
      410                                                                               
    411   if i_screen_start_line ne 0.                                                    
      412     gt_stack-is_layout-i_am_popup = 'X'.                                          
      413   endif.                                                                          
      414                                                                               
    415   if gt_stack-is_layout-detail_only is initial.                                   
      416     if gt_stack-is_layout-suppress_dynpro is initial.                             
      417       if i_screen_start_line eq 0.                                                
    >>>>>         call screen 500.                                                          
      419         sy-pagno = g_sypagno.  "wegen Dynpro 200 Spoolinfo bei F8+Druck           
      420       else.                                                                       
      421         call screen 501 starting at i_screen_start_column                         
      422                                     i_screen_start_line                           
      423                         ending   at i_screen_end_column                           
      424                                     i_screen_end_line.                            
      425         sy-pagno = g_sypagno.                                                     
      426       endif.                                                                      
      427     else.                                                                         
      428       if gt_stack-is_layout-interface_complete is initial.                        
      429         perform first_list_display.                                               
      430       else.                                                                       
      431         perform list_output_new tables t_outtab                                   
      432                                        gt_dummy.                                  
      433       endif.                                                                      
      434     endif.                                                                        
      435   else.                                                                           
      436     gs_selfield-tabindex = 1.                                                     
      437     gs_selfield-tabname  = gt_stack-i_tabname.                                    
    Regards,
    Davis

    The error message is Posting_illegal_statement and yes I did search OSS (I always do that first) but I could not find anything relevant to my error.
    Regards,
    Davis

  • Is there a way to get the actual XML string when using the JAXP SAX Parser?

    Hi All,
    I am using a JAXP SAX xml parser and am looking for a way to get the actual line of xml that is being parsed from within a content handler.
    Here's my scenario. Consider the following example xml document.
    <formCollection>
       <form name="myForm">
          <text/>
          <selection/>
       </form>
       <form name="anotherForm">
          <text/>
       </form>
    </formCollection>My hope is to validate the entire document and then insert an xml string containing each "form" element (and its sub-elements) into a map for later use. My thought was to create a String as each "form" element is being parsed (begining with the form's startElement event and concatenating until the form's endElement event is reached) and then inserting this string into the map. Is there a way to get the actual line of xml that is being parsed, rather than just the element name and attribute values?

    DrClap wrote:
    YouRang wrote:
    2. The first handler would validate the entire XML document, extract the "type" attribute from each <form> element, and place each <form> element and its sub-elements into the map of Strings, using the "type" attribute as the key. The second handler would take a <form> element and parse it into a Form object for the display. This option was the impetus for my question because it relies on the first handler being able to access the entire <form> element XML String and write it to a map.I don't see why you need the raw data from the XML document here. You should already be abstracting your data into Java classes in the first handler, instead of making the second handler do the parsing all over again.Correct, I am not referring to XForms. In this case, it happens that I am using the XML to generate an SWT ScrolledForm object and, thus, the XML element name happens to be named "form." However, the concept/design problem could apply to any type of object and the XML element could be appropriately renamed.
    My experience with XSLT is limited and I haven't done anything with it for several years. With that said, it seems that it is primarily used for generating web content, which wouldn't apply in this case because this is for a client-server application. I could be off base on this one -- if XSLT applies to much broader translations and would be more appropriate for generating Java objects than my current methodology, I could certainly look into it further.
    I apologize that option two didn't make more sense; it is difficult to explain. Yes, optimally the data should be abstracted into Java classes in the first handler. This is really an elaboration that I failed to specify when explaining option one. The problem is that the user can choose to create any number of "forms" of any type. For instance, let's say that from the File -> New menu there are options for seven different types of forms and each form is used to send completely different data. The user can select form1, select form1 again, select form4, and select form7 (or any other combination) and bring up tabs that display the different forms. The user can then enter data and submit each form separately. When the user selects File -> New -> FormX, a SWT ScrolledForm object that corresponds with FormX must be given to the display. Because SWT ScrolledForm objects do not allow a deep copy, I cannot simply read the XML <form> elements at initialization, parse them into ScrolledForm objects, and pass deep copies of the ScrolledForm objects to the display each time the user clicks File -> New -> FormX. The only simple way I see of getting a new copy of a ScrolledForm object is to reparse the appropriate XML <form> element in order to create one each time the user selects File -> New -> FormX. As such, one handler would need to read the entire XML document and parse the <form> elements into a map (or some other data structure) and another handler would need to parse individual <form> elements into SWT ScrolledForm objects. The first handler would be called at initialization and the second handler would be called each time a user clicked on File -> New -> FormX. Once again, this isn't exactly my favorite implementation... but seems the simplest given that there is no way to do a deep copy of an SWT ScrolledForm object. Hopefully that makes a little more sense. No worries if it doesn't -- I just figured I'd throw this out there and see if anyone had a better idea.

  • Horrible formatting of code when using library assets

    I'm using library assets to manage my navigation. I then
    insert the library asset into a template and use that template for
    creating content. The idea is that I add or remove a navigation
    entry in one place and it updates the entire site. That's working.
    My problem is that the source code looks awful: it insists on
    wrapping the code and removing indentations. Is this normal
    ??

    Good going. After much fiddling and experimentation, that's
    how I do it,
    too.
    Murray --- ICQ 71997575
    Adobe Community Expert
    (If you *MUST* email me, don't LAUGH when you do so!)
    ==================
    http://www.dreamweavermx-templates.com
    - Template Triage!
    http://www.projectseven.com/go
    - DW FAQs, Tutorials & Resources
    http://www.dwfaq.com - DW FAQs,
    Tutorials & Resources
    http://www.macromedia.com/support/search/
    - Macromedia (MM) Technotes
    ==================
    "Dennis Kmetz" <[email protected]> wrote in
    message
    news:ef1l4i$kol$[email protected]..
    > Murray... thanks so much. This solves two problems, (1)
    the format issue
    > that
    > ninjayong had, and (2) my issue... I was looking for a
    method to include
    > header
    > content in a library item. The SSI approach works in the
    header section,
    > and
    > the body section... and of course is much much easier to
    read, since DW
    > does
    > not mess up the formating when the SSI statement is
    used.
    >
    > Now I will always use templates with SSI's instead of
    templates with
    > library
    > items.... THANKS SO MUCH!!!
    >

Maybe you are looking for

  • Muse with Business Catalyst vs GoDaddy

    My client would like to make edits on his own to his website I built for him in Muse.  I currently host his site the their emails via GoDaddy. I also have two Wordpress blogs wrapped into the same hosting package.  That being said, I really don't wan

  • Changing Report Fields

    Dear Forum I am using Version XI. I have a number of old reports that have been created using the table linking method. Due to our application product versioning i need to convert these into a series of views. Is there any method within the standard

  • Severe Rendering problems

    I work on a g5 at my school, primarily editing a school television show that I work on. I am working on a slideshow/video for a band/orchestra banquet on Final Cut Pro 5, and the computer has decided to not let me render anything anymore. I don't thi

  • Where do I find the copy stamp / tool in Photoshop elements 12?

    Where do I find the copy stamp / tool in Photoshop elements 12?

  • Question in Personalization in OAFramework

    Hi everyone, In a seeded Selfservice page, when i try to update a value, it takes me to a new page where i have 2 options update mode and correction mode which are basically radio buttons. The default option is becoming the update mode radiobutton. H