.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "XML_RDB 3pm" .TH XML_RDB 3pm "2000-12-25" "perl v5.18.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBIx::XML_RDB \- Perl extension for creating XML from existing DBI datasources .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 5 \& use DBIx::XML_RDB; \& my $xmlout = DBIx::XML_RDB\->new($datasource, \& "ODBC", $userid, $password, $dbname) || die "Failed to make new xmlout"; \& $xmlout\->DoSql("select * from MyTable"); \& print $xmlout\->GetData; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module is a simple creator of \s-1XML\s0 data from \s-1DBI\s0 datasources. It allows you to easily extract data from a database, and manipulate later using XML::Parser. .PP One use of this module might be (and will be soon from me) to extract data on the web server, and send the raw data (in \s-1XML\s0 format) to a client's browser, and then use either XML::Parser from PerlScript, or \s-1MSXML\s0 from VBScript/JavaScript on the client's machine to generate \s-1HTML \s0(obviously this relies upon using \s-1MS IE\s0 for their Active Scripting Engine, and \s-1MSXML\s0 comes with IE5beta). .PP Another use is a simple database extraction tool, which is included, called sql2xml. This tool simply dumps a table in a database to an \s-1XML\s0 file. This can be used in conjunction with xml2sql (part of the \s-1XML::DBI\s0(?) package) to transfer databases from one platform or database server to another. .PP Binary data is encoded using \s-1UTF\-8.\s0 This is automatically decoded when parsing with XML::Parser. .PP Included with the distribution is a \*(L"Scriptlet\*(R" \- this is basically a Win32 \s-1OLE\s0 wrapper around this class, allowing you to call this module from any application that supports \s-1OLE.\s0 To install it, first install the scriptlets download from microsoft at http://msdn.microsoft.com/scripting. Then right-click on \s-1XMLDB\s0.sct in explorer and select \*(L"Register\*(R". Create your object as an instance of \&\*(L"\s-1XMLDB\s0.Scriptlet\*(R". .SH "FUNCTIONS" .IX Header "FUNCTIONS" .SS "new" .IX Subsection "new" .Vb 1 \& new ( $datasource, $dbidriver, $userid, $password [, $dbname] ) .Ve .PP See the \s-1DBI\s0 documentation for what each of these means, except for \f(CW$dbname\fR which is for support of Sybase and \s-1MSSQL\s0 server database names (using \*(L"use \f(CW$dbname\fR\*(R"). .SS "DoSql" .IX Subsection "DoSql" .Vb 1 \& DoSql ( $sql ) .Ve .PP Takes a simple Sql command string (either a select statement or on some \s-1DBMS\s0's can be a stored procedure call that returns a result set \- Sybase and MSSql support this, I don't know about others). .PP This doesn't do any checking if the sql is valid, if it fails, the procedure will \*(L"die\*(R", so if you care about that, wrap it in an eval{} block. .PP The result set will be appended to the output. Subsequent calls to DoSql don't overwrite the output, rather they append to it. This allows you to call DoSql multiple times before getting the output (via \fIGetData()\fR). .SS "GetData" .IX Subsection "GetData" Simply returns the \s-1XML\s0 generated from this \s-1SQL\s0 call. Unfortunately it doesn't stream out as yet. I may add this in sometime in the future (this will probably mean an \s-1IO\s0 handle being passed to \fInew()\fR). .PP The format of the \s-1XML\s0 output is something like this: .PP .Vb 10 \& \& \& \& \& Data \& Data \& ... \& \& \& ... \& \& \& \& ... \& \& .Ve .PP This is quite easy to parse using XML::Parser. .SH "AUTHOR" .IX Header "AUTHOR" Matt Sergeant, matt@sergeant.org .SH "SEE ALSO" .IX Header "SEE ALSO" XML::Parser