XML

Syndicate content 17 

This is a translation of the following article. Thanks @Evgeny Shvarov  for the help in translation.

Let's assume that you wrote a program that shows "Hello World!", for example:

  write "Hello, World!"

The program works and everyone is happy.

With time, however, your program becomes more complex, gets more features and you eventually need to show the same string in different languages. Moreover you don't know the number and names of these languages.

The spoiler below contains a description of how the task of multi-language localization is solved in Caché.

Last comment 20 May 2017
+ 8   0 1
359

views

+ 8

rating

One useful feature of our REST framework is the ability for a dispatch class to identify request prefixes and forward them to another dispatch class. This approach of modularizing your URL map will improve code readability, enable you to easily maintain separate versions of an interface, and provide a means to protect API calls that only certain users will be allowed to access.

Overview

To set up a REST Service on your Caché instance, you need to define a dedicated CSP application and create the associated dispatch class that handles incoming requests. The dispatch class extends %CSP.REST and will include an XData block that contains your URL map. This tells the system which method to call when a particular request is received.

For example

+ 7   0 2
0

comments

1505

views

+ 7

rating

The task of handling office documents, namely docx documents, xlsx tables and pptx presentations is quite complicated. This article offers a way to parse, create and edit documents using only XSLT and ZIP.

Why? docx is the most popular document format, so the ability to generate and parse this format would always can be useful. The solution in a form of a ready-made library, can be problematic for several reasons:

  • library may not exist
  • you do not need another black box in your project
  • library restrictions : platforms, features, etc.
  • licensing
  • processing speed

In this article, I would use only basic tools for work with the docx documents.

Last comment 3 March 2017
+ 5   0 0
2428

views

+ 5

rating

XDATA is used for a whole host of ISC libraries to store things like Zen pages, BPL logic and DTL transformations.

XDATA is the equivalent of XML config files of the JAVA world and JSON config files of the JavaScript / NPM world.

Whilst Atelier looks to shift source code to the disk, XDATA will remain a key component to source control our projects config / meta data.

I come across many developers who overlook XDATA, seeing it as an internal function of Cache and Ensemble and instead use globals to move meta data around, I've been there myself.

It might be because XDATA can feel a little clumsy to use, so here is an approach that I use that makes working with XDATA a breeze

Last comment 7 September 2017
+ 3   0 4
500

views

+ 3

rating

How Tax Service, OpenStreetMap, and InterSystems IRIS
could help developers get clean addresses

 

Pieter Brueghel the Younger, Paying the Tax (The Tax Collector), 1640

 

In my previous article, we just skimmed the surface of objects. Let's continue our reconnaissance. Today's topic is a tough one. It's not quite BIG DATA, but it's still the data not easy to work with: we're talking about fairly large amounts of data. It won't all fit into RAM at once, and some of it won't even fit on the drive (not due to lack of space, but because there's a lot of junk). The name of our subject is FIAS DB: the Federal Information Address System database - the databases of addresses in Russia. The archive is 5.5 GB. And it's a compressed XML file. After extraction, it will be a full 53 GB (set aside 110 GB for extraction). And when you start to parse and convert it, that 110 GB won't be enough. There won't be enough RAM either.

+ 2   2 1
0

comments

131

views

+ 2

rating

I would like to write some code to parse a set of HTML pages from the internet in order to gather information from each web page.

All of the web pages are generated using a template, so the format of each of the web-pages is consistent with one-another and the information that I want to gather is always located in the same logical place within the page.

What is the best way to parse an html page in order to gather information at a specific place?

Can XML XPATH be used here?  Does anyone have any examples of parsing HTML content?

 

Last answer 1 June 2016 Last comment 15 December 2017
+ 2   0 2
803

views

+ 2

rating

I am using studio 2015 version which does not have dynamic objects and I need to read xml and convert that to a json I have managed to come close to json string but with little difficulties .I need to be able to identify the root element and specify where to put braces between objects  anyone  with any idea is welcome he is my code so far

Last answer 1 December 2017 Last comment 4 December 2017
+ 1   0 1
534

views

+ 1

rating

HealthShare HealthConnect and Information Exchange version 15.03 support import transformations from C-CDA 2.1 to SDA. You can find these transforms in your installation's csp/xslt/SDA3 directory. For general information about import transforms, see "CDA Documents and XSL Transforms in HealthShare" in Overview of Health Connect.

Among the enhancements to import functionality added in connection with C-CDA 2.1 support is the ability to preprocess your C-CDA input files prior to the transformation done for import.

Preprocessing support can greatly simplify and reduce total processing time for transformations. Some possible use cases are

0   0 1
0

comments

429

views

0

rating

I am validating a v3 document against one xsd and using %XML.SAX.ContentHandler class . My requirment is to find the xpath of the error location. There is no method which does it.

I can find the line and offset using LocatePosition method. 

Can someone help me on this.

Thanks 

Suman

Last answer 14 March 2019
+ 1   0 2
0

comments

99

views

+ 1

rating

I interested on how others feel on this subject.  In general terms when you have a class that extends from %XML.Adaptor and you call XMLExport no validation is automatically done as part of the XMLExport process.  As an example if you do the following

 

SAMPLES>S tPatient=##Class(Sample.Person).%New()
 
SAMPLES>Set tPatient.Name="asdfghjklqwrrrrokkfkljbvkfbjflkbjflkbjblkjblkjdblkjblkcn l nn klkjdfkbjdlkbjlkbj"

SAMPLES>w tPatient.XMLExport(,",indent")
<Person>
  <Name>asdfghjklqwrrrrokkfkljbvkfbjflkbjflkbjblkjblkjdblkjblkcn l nn klkjdfkbjdlkbjlkbj</Name>
</Person>

Last answer 14 April 2016 Last comment 14 April 2016
+ 1   0 1
375

views

+ 1

rating

We are receiving XML documents and storing them. When we click to go into the clinician portal and again to view a patient, we can see the documents but none of the data is mapped to their respective buckets, i.e. allergies or medications.

I am thinking that I need to build an XSLT parser and change the format to SDA3, is this an appropriate approach? Or would using the Data Transformation (Ensemble -> Build -> Data Transformation) be a better idea? Lastly, if the XSLT idea is preferred, where would I call it within the stack?

Last answer 31 May 2016
0   0 2
0

comments

251

views

0

rating

Hi folks,

One of my clients want to project a null property of a cache object to an empty XML element. Say, if we have a class:


Class Diabetes.BS.Message.LabReportMessage Extends Ens.Request
{

Property Report As %String;

Property IsRisky As %Boolean;

Property RiskValue As %String ;

}


If the instance of this class has a null RiskValue, after projection, they want the XML as following:

<LabReportMessage>
                <Report>Somestring</Report>
                <IsRisky>1</IsRisky>
                <RiskValue/>
 </LabReportMessage>

Is there any way we can do it? Thanks.

Last answer 22 June 2018
0   0 0
0

comments

188

views

0

rating

This might be a very simple rookie question but I'm trying to create couple of web services in Ensemble and using  document below as my tutorial, I do manage to do it:

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...

But instead of doing it as described above, where method signature is like this:

Method GetCustomerInfo(ID As %Numeric) As ESOAP.SOAPResponse [WebMethod]

I would like it to be:

Method GetCustomerInfo(valid XML against schema1) As valid XML against schema2 [WebMethod]

because I'm trying to replicate a web service from another non-Intersystems platform and I have schema that web service request should follow and schema that web service response should follow

Last answer 30 November 2017 Last comment 17 December 2017
0   0 2
364

views

0

rating

Hello everyone!
I need to have a ResultSet of type % SQL.Statement show its contents when it is trafficked in a message property by Business Process.
I tried to use the % XML.DataSet type that inherits properties of type % XML.Adaptor, but did not work.
Is there any other way to traffic as an object, other than within a Stream?

Note: I can not traffic Streams and I will not be able to use Correlate in this case.

Last answer 3 April 2019 Last comment 5 April 2019
0   0 2
46

views

0

rating

Hello,

How to get XML subtree from XPATH.DOMResult object as Stream or CacheString.

 

Here is my classmethod. My system receives XML message which has nested structures. The requirement is to send one message at a time to the destination. I have created the XPATH document and used EvaluateExpression method and which returns XML.XPATH.Result of type DOM. I am able to read the dom and get value of the element and its text. But I am looking to send back the subtree.

Code

Last answer 19 July 2016 Last comment 19 July 2016
0   0 1
593

views

0

rating

I am trying to transform an Enlib.EDI.XML.Document through aXLT I know how to trans form the xml document  through a xlt stylesheet but been trying to get an Enlib.EDI.XML. Document from a procees by creating aoperation that will do the transformation of this to file if this can be done in a process all ideas welcome  so far I have come to this and I keep getting an erro

Last answer 7 December 2017 Last comment 14 December 2017
0   0 2
304

views

0

rating

Hi I'm just trying to make sure I'm not missing a trick here.

Basically our PAS doesn't do hl7 messages but does some XML which you can create. So I'm just trying to create some xml files and then get healthshare/ensemble to parse them and to process accordingly. 

I'm getting some good results doing this. But maybe I've got a small hitch. In each of my xml files I've the data for the patient/client. 

Then in the xml schema which I've imported I've specified the elements. I've created a subtransform which has helped when converting but perhaps I should have created a schema for the client which I then can reuse in each of the others. So if I added on another client element it would be simple to do as I would only need to do it in a few places

Last comment 26 September 2018
0   0 2
0

answers

164

views

0

rating

I have an xml that has non standard characters and I would like to transform it with xslt  so that those characters render in the format  &#nnn here is what I have so far any help appreciated 

xslt

 

 

<!--?xml version="1.0"?-->
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="Windows-1252" indent="yes" omit-xml-declaration="yes" method="xml">
>  <xsl:template match="/Recordset">
    <recordset><xsl:apply-templates></xsl:apply-templates></recordset>
  </xsl:template>
  <xsl:template match="*|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*">
      <xsl:apply-templates>
    </xsl:apply-templates></xsl:apply-templates></xsl:copy>
  </xsl:template>
</xsl:output></xsl:transform>
 

XML

Last comment 17 April 2019
0   0 4
0

answers

66

views

0

rating

The same piece of data never throws this error on other operations. I am getting this error on one always .

The same SDA container never throws error on other operation.

ERROR #6901: XSLT XML Transformer Error: SAXParseException: invalid character 0x1C (Occurred in an unknown entity)


Set xslt=##class(%Dictionary.XDataDefinition).%OpenId(..%ClassName(1)_"||Xmethod",-1,.tStatus)
$$$ThrowOnError(tStatus)
Set tStatus= ##class(%XML.XSLT.Transformer).TransformStream(myStream,xslt.Data,.OpStream)
$$$ThrowOnError(tStatus)

XData Xmethod

Last answer 31 August 2018
0   0 2
0

comments

168

views

0

rating

I am trying to read an xml document using %XML.TextReader and that's is all well and l can get my elements values  but would like to determine where the next record start on the xml without referring to the document path in essence would like to use the same method to read different xml docs. I would like to know if is there a way or a function that I can use to get the start and end of a record in xml  as I would to get the start and end element.

Typical example  l would like to get the highlighted paths please note this would need to go for any xml doc

Last answer 20 December 2017 Last comment 20 December 2017
0   0 3
271

views

0

rating

I'm writing a SOAP client in Ensemble (2017.2.2) that is required to pass empty elements to the SOAP server in the form <xsi:type="ns:ResponsibleUser"/> where ResponsibleUser is a class that itself has no properties. I initially thought I'd found the answer with the XMLIGNORENULL parameter of XML enabled classes but this didn't make any difference for SOAP requests, only working when I wrote the XML to a file. Then I came across the XMLIGNORENULL parameter for the SOAP client class (inherited from %SOAP.WebBase), but this only works for %String properties and not for properties of arbitrary class types.

Is there a way to force the output of an empty object-valued property as an empty element in a SOAP request?

Thanks in advance for any guidance

Last answer 15 January 2019
0   0 1
0

comments

106

views

0

rating