Document Structure ################## .. contents:: Table of Contents .. _top-level-nodes: Top Level Nodes *************** .. image:: images/top_level_diagram.png Each of the top level nodes described below with the exception of :ref:`xmltransactionheader-node` and :ref:`softwareinfo-node` represent a high-level block of information about a building or project that can be related to other nodes to describe useful information about a building, the people and businesses who interact with the building, and actions taken on the building. The relationships between the top level nodes are defined with :doc:`references` that can be used, for example, to associate a :ref:`building-node` with a :ref:`project-node`, :ref:`consumption-node` with a :ref:`building-node`, or a :ref:`contractor-node` with a :ref:`project-node`. The schema itself does not enforce the particular constraints for :doc:`usecases/index`, but rather provides a container for all the relevant components and a referencing scheme to relate them. .. _xmltransactionheader-node: XMLTransactionHeaderInformation =============================== The ``XMLTransactionHeaderInformation`` element meta data about the HPXML file. .. code-block:: xml audit Housesoft 1.0 2014-09-02T17:32:12Z create ``XMLType`` is generally unused and may be deprecated in the future. ``XMLGeneratedBy`` is often used to transmit the name of the software that generated the HPXML file. It may also be deprecated in the future due to its redundancy with :ref:`softwareinfo-node`. ``CreatedDateAndTime`` is the date and time the file was generated in the ISO 8601 format. ``Transaction`` describes whether this is a new document or an update to a previous one. .. _softwareinfo-node: SoftwareInfo ============ ``SoftwareInfo`` provides a place to transmit information about the software used to generate the HPXML. .. code-block:: xml WOPR 1.0 .. _contractor-node: Contractor ========== The ``Contractor`` node describes a business that the customer works with to do an audit or upgrade to their building. .. _customer-node: Customer ======== A customer is the owner, tenant, or some other person who has a vested interest in the house being described and worked on. This node is a place to describe that person, their contact information, and their relation to the building. .. _building-node: Building ======== The ``Building`` node describes the physical characteristics of a building at a point in time - past, present, or future. .. _project-node: Project ======= The ``Project`` node describes work that has been completed or is to be completed to a :ref:`building-node`. The measures described can have references pointing to specific components on the building and what was changed between the pre- and post-upgrade states and associated costs. .. _utility-node: Utility ======= The ``Utility`` node represents a utility company. .. _consumption-node: Consumption =========== The ``Consumption`` node stores and represents the energy and/or water use of a building. It can contain high resolution electric smart meter data, information on fuel oil, or more typically, monthly gas or electric bills. .. _extension-elements: Extension Elements ****************** Because it is impossible to foresee every possible data point that will ever need to be collected and transmitted about a house or upgrade, most elements in HPXML contain an ``extension`` element containing an ```` designation. That allows any element from any namespace to be inserted. This is to facilitate transfer of data elements not available in the standard. .. code-block:: xml as much wood as a wood chuck could chuck .. warning:: Please exercise extreme caution and discretion when you consider implementing ``extension`` elements. Typically, the temptation to use them happens when a difference arises between the way your software and/or home performance program represents a certain data field and the way HPXML represents it. It is crucial in these cases to either map your data into HPXML or change the way you represent it internally to conform to the HPXML standard. **If each software vendor and home performance program extends HPXML in non-standard ways, the value proposition of the standard is nullified.** If there is no possible way to map your data into existing HPXML data fields, please contact the HPXML working group before implementing an extension. The working group would prefer to extend the standard for the benefit of everyone and avoid the use of extensions wherever possible. Usually, you will not be the only one with the need for a particular element that was overlooked in the standard. By participating in the working group and lobbying for the elements you need you can enhance the value of HPXML for all parties.